Hash๋? ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ, ์ ์งํ๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ค์ ํด์ ํจ์๋ฅผ ํตํด key๋ก ๋ถ๋ฅํ๊ณ , ๊ทธ key์ ๋ฐ๋ผ value๋ฅผ ์ ์ฅํ๋ ํํ๋ฅผ ๋ปํ๋ค. HashTable์ด๋ Key๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ Index๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ์ ๊ฐ์ ธ์จ๋ค. "์ ๋ฆฌ"์ ์์ด ์ด๋ฆ์ ์ฐพ๊ธฐ ์ํด 1. "์ ๋ฆฌ"๋ผ๋ key๋ฅผ hash ํจ์์ ์ ๋ฌํ๋ค 2. hash ํจ์ ๋ด์ hashํจ์๋ฅผ ํตํด ์ฐพ์ value์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋๋ค. 3. ์ฐพ์ ์ธ๋ฑ์ค๋ฅผ ํตํด value๊ฐ "jarry"๋ฅผ ์ป๋๋ค. Hashable์ด๋? https://developer.apple.com/documentation/swift/hashable Hashable | Apple Developer Documentation A type that can be h..
์ ์ฒด ๊ธ
๊ต์ฅํ ๋UIAlertAction์ ์ฌ์ฉํ๋ฉด์ ์ด๋ค ๋ฒํผ์ ๋๋ ์ ๋ UIAlertAction์ ๊ทธ ํจ์ ๋ด์์ ์ค์ ํ์ฌ addAction()ํ๋ ๊ฒฝ์ฐ๋ก๋ง ์ฌ์ฉํ์๋๋ฐ ํ์ํ Actions๋ฅผ ๋ฏธ๋ฆฌ ํ๋กํผํฐ๋ก ์ ์ฅํด๋ ํ ์ถํ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ UIAlertAction์ ์ ๋ฌํ์ฌ UIAlertController๋ก ๋์ฐ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด๋ณด๊ฒ ๋์๋ค. var myActions: [UIAlertAction] = [] ๋จผ์ ๋ด๊ฐ ์ ์ฅํ ์ก์
๋ฐฐ์ด์ ํด๋์ค ๋ด ํ๋กํผํฐ๋ก ๋ฏธ๋ฆฌ ์ ์ธํด๋๋ค. private func setupAlertActions() { let action1 = UIAlertAction(title: "action1", style: .default, handler: { _ in print("select action1"..
๋๋ ์๋ก์ด ๊ฐ๋
์ ์ ํ ๋ ๋ญ๊ฐ ์ด๊ฑธ ์ฌ์ฉํด์ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋์์ด ๋๊ณ , ์ ์ฌ์ฉํ๋์ง๋ฅผ ์ฒด๊ฐํ์ ๋ ๊ทธ ๊ฐ๋
์ ์์ ํ ๋ฐ์๋ค์ผ ์ ์๋ ๊ฒ ๊ฐ๋ค. ๋ญ๊ฐ ๋ด๊ฐ ์ด ๊ฐ๋
์ ํ์์ฑ์ ์จ์ ํ ๋๋ผ์ง ๋ชปํ๋ฉด ์ฌ์ฉ์ ํ๋ฉด์๋ ๋ง์ ํ์ผ ์ ์๋ฌธ์ด ์๊ฒ ์๋ฆฌ์ก๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ ํ์
์ ํ๊ณ ์ผ์ ํ๊ธฐ ์ํด์๋ ๋ด๊ฐ ๋ง์์ผ๋ก ์์ ํ ๋ฐ์๋ค์ด์ง ์์์์๋ ๊ทธ๊ฒ ๋ฌด์์ธ์ง ์๊ณ ๋น ๋ฅด๊ฒ ๋ฐ์๋ค์ผ ์ ์๋ ์ค๋น๋ ๋์ด์์ด์ผ ํ๋๊ฒ ๋ง๋ค๊ณ ๋ ์๊ฐํ๋ค.(๊ทผ๋ฐ ๊ทธ๋ ๊ฒ ์ํ์ใ
ใ
) ์ด๋ฒ์ Coordinator Pattern์ ์ฒ์ ๊ณต๋ถํ๊ฒ ๋์๋ค. ์์ ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํตํด ๊ฐ๋
์ ์ ํ ์ ์ ์์์ง๋ง ๊ทธ๋๋ ์ค๋ ฅ์ด ๋ถ์กฑํด์ ์ธ๊ฐ ํ์์ฑ์ ์จ์ ํ ๋๋ผ์ง ๋ชปํ๋ค. ์ ๊ทธ๋ฌ๋์ง ์๊ฐํด๋ณด๋ฉด ๋๋ฌด ์์ ํ๋ก์ ํธ์ ์ด ๊ฐ๋
์ ..
RxSwift๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์ฃผ ์ ํ๊ฒ ๋๋ subscribe, bind, drive๋ฅผ ๋น๊ตํ์ฌ ์ ๋ฆฌํด๋ณด์! 1. subscribe public func subscribe( onNext: ((Element) -> Void)? = nil, onError: ((Swift.Error) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil ) -> Disposable { let disposable: Disposable if let disposed = onDisposed { disposable = Disposables.create(with: disposed) } else { disposable = Disposable..
์์ฃผ ์ฌ์ฉ๋๋ Operator์ธ๋ฐ ์๊ฐํด๋ณด๋ ์ฐจ์ด์ ์ ๋ช
ํํ๊ฒ ์ดํดํ ํ ์ฌ์ฉํ์ง ์๊ณ ๊ทธ๋๊ทธ๋ ์ฐพ์์ ์ฌ์ฉํ์์ด์ ์ด๋ฒ ๊ธฐํ์ ๋ช
ํํ ๊ฐ๋
์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค. Merge ์ฌ๋ฌ Observable์ด ๋ฐฉ์ถํ๋ ํญ๋ชฉ๋ค์ ํ๋์ Observable์ด ๋ฐฉ์ถํ๋๋ก ๋ณํฉํ๋ค. ๋ง๋ธ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ด ์ฒซ๋ฒ์งธ ์คํธ๋ฆผ๊ณผ ๋๋ฒ์งธ ์คํธ๋ฆผ์ ํฉ์ณ ํ๋์ ์คํธ๋ฆผ์ผ๋ก ๋ง๋ค์ด์ค๋ค. ์ด๋ ์ฒซ๋ฒ์งธ ์คํธ๋ฆผ, ๋๋ฒ์งธ ์คํธ๋ฆผ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ๋ง๋ค ๋ฐ๋ก๋ฐ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐฉ์ถํ๋ค. ๋จ์ํ ๋ ์คํธ๋ฆผ์ ์ด๋ฒคํธ๋ฅผ ํ๋๋ก ํฉํ๊ธฐ ๋๋ฌธ์ ์คํธ๋ฆผ์ ๊ตฌ๋ณ ํ ์๋ ์๋ค. let firstSubject = BehaviorSubject(value: 1) let secondSubject = BehaviorSubject(value: 2) let thirdSu..
์ค์ผ์ค๋ง? ํ๋์ ๊ด๋ฆฌ์๋ก ํ๋ก์ธ์ค๋ค์ ์ฌ๋ฌ ์ํฉ์ ๊ณ ๋ คํ์ฌ cpu์ ์์คํ
์์์ ์ด๋ป๊ฒ ๋ฐฐ์ ํ ์ง ๊ฒฐ์ ํ๋ ์ญํ ์ ํจ - ๊ณ ์์ค ์ค์ผ์ค๋ง (๊ฐ์ฅ ํฐ ํ์์ ์ด๋ฃจ์ด์ง๋ ์ค์ผ์ค๋ง) ์ด๋ค ์์
์์ฒญ์ด ์ค๋ฉด ์ค์ผ์ค๋ฌ๊ฐ ์์คํ
์ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์์
์ ์น์ธํ ์ง, ๊ฑฐ๋ถํ ์ง ๊ฒฐ์ ํจ(์น์ธ ์ค์ผ์ค๋ง ์ด๋ผ๊ณ ๋ ํจ) - ์ค๊ฐ์์ค ์ค์ผ์ค๋ง ์ ์ฒด ์์คํ
์ ํ์ฑํ๋ ํ๋ก์ธ์ค ์๋ฅผ ์กฐ์ ํ์ฌ ๊ณผ๋ถํ๋ฅผ ๋ง์ - ์ ์์ค ์ค์ผ์ค๋ง ์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ๊ณ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ ์ํ๋ก ๋ณด๋ผ์ง ๋ฑ์ ๊ฒฐ์ ํจ ์์ฃผ ์งง์ ์๊ฐ์ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ๋จ๊ธฐ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ๋ ํจ ์ค์ผ์ค๋ง์ ๋ชฉ์ ๊ทผ๋ณธ์ ์ผ๋ก ์ด๋ฐ ์ค์ผ์ค๋ง์ ์ ํ ๊น? ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ณตํํ๊ฒ ์์
ํ๋๋ก ํ๊ธฐ ์ํด์์ด๋ค. ์์ฒญ๋๊ฒ ์ค๋ ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค๋ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ ์ผ๋ก ์งง..
ํด๋ฆฐ์ฝ๋ ๋
ํ๊ฐ .. :) ๋๋ณด๊ธฐ ํด๋ฆฐ์ฝ๋๋ฅผ ์ฝ๊ณ ๋ ์ข์ ์ฝ๋์ ๊ด์ฌ์ด ์๊ธฐ๊ฒ ๋์๋ค. ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐฉ์์ ๊ตฌํ์ ์์ฃผ๋ก ๊ณ ๋ฏผ์ ํ์๋๋ฐ, ํด๋ฆฐ์ฝ๋์ ๋์จ ๋ด์ฉ์ ๋ด ํ๋ก์ ํธ์ ์ง์ ์ ์ฉํด๋ณด๋ ๊ณผ์ ์ ํตํด ๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ๋ค๋ ๊ณ ๋ฏผ์ ํ๊ฒ ๋์๋ค. ํด๋ฆฐ์ฝ๋์ ๋์์๋ ๋ด์ฉ๋ค์ด ์ ๋ถ ๋ค ๋ง๋ ๋ง์ด๋ผ๊ณ ์๊ฐํ์ง ์๋๋ค. ์ํฉ์ ๋ฐ๋ผ ์ข์ง ๋ชปํ ๋ฐฉ๋ฒ, ๋นํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ํจ์จ์ ์ผ ์ ์๊ณ , ํจ์จ์ ์ธ, ๋ค๋ฅธ์ฌ๋๋ค์ด ์ ํธํ๋ ๊ทธ๋ฐ ๋ฐฉ์๋ค์ด ๋นํจ์จ์ ์ผ ์ ์๋ค. ์๋ฅผ๋ค์ด ์ด๋ค ๋ฌ๋์ปค๋ธ๊ฐ ๋์ ์ํคํ
์ฒ๋ฅผ ๋์
ํ๊ธฐ ์ํด ํ์๋ค์ด ๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ์ ์๋นํด์ผ ํ๋ค๋ฉด, ๊ทธ๋ฐ๋ฐ ์ด ๋ ํ๋ก์ ํธ ๊ธฐํ์ด ์งง๋ค๋ฉด ๊ณผ์ฐ ๊ทธ ์ํคํ
์ฒ๋ฅผ ๋์
ํ๋๊ฒ ์ฌ๋ฐ๋ฅธ ์ ํ์ผ๊น? ํ์ฌ์ ๋๋ ์ฌ๋ฐ๋ฅด์ง ์๋ค๊ณ ์๊ฐํ๋ค. ์ข์ ์ํคํ
์ฒ, ๊ณ ๋ฏผ..
1. CPU์ ๊ตฌ์ฑ์ ๋ํด ์ค๋ช
ํ์์ค - CPU๋ ๋ช
๋ น์ด๋ฅผ ํด์ํ์ฌ ์คํํ๋ ์ฅ์น์ด๋ฉฐ ํต์ฌ ์์๋ผ ๋ณผ ์ ์๋ค. ์ฐ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์ฅ์น, ์ ์ด์ฅ์น, ๋ ์ง์คํฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ด๊ฒ๋ค์ด ํ์
ํ์ฌ ์์
์ ์ฒ๋ฆฌํ๋ค. 1) ์ฐ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์ฅ์น ๋ฐ์ดํฐ๋ฅผ ์ฐ์ฐํ๋ ์ฅ์น๋ก ๋ง์
, ๋บ์
, ๊ณฑ์
, ๋๋์
๊ณผ ๊ฐ์ ์ฐ์ ์ฐ์ฐ, AND, OR๊ณผ ๊ฐ์ ์ฐ์ฐ ์ํ 2) ์ ์ด์ฅ์น ์์
์ ์ง์ํ๋ ๋ถ๋ถ 3) ๋ ์ง์คํฐ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ๋ณด๊ดํ๋ ๊ณณ -> ์? ์์๋ก ๋ณด๊ดํด์ผ ํ ๊น? -> ์ฐ์ฐ์ ํ๊ธฐ ์ํด ํ์ํ ๋ฐ์ดํฐ๋ฅผ CPU๋ก ๊ฐ์ ธ์ ์์๋ก ๋ณด๊ดํด์ผ ํจ (์ ์ฅ๋์ด ์๋ ๊ฐ์ CPU๋ก ๊ฐ์ ธ์์ ๊ณ์ฐํด์ผ ํ๋๋ฐ ๊ณ์ฐํ ๋ ๋ ๊ณณ์ด๋ผ๊ณ ์๊ฐ!) 2. ํฐ๋
ธ์ด๋ง ๊ตฌ์กฐ์ ๊ฐ์ฅ ์ค์ํ ํน์ง์ ์ค๋ช
ํ์์ค CPU, ๋ฉ๋ชจ๋ฆฌ, ์
์ถ๋ ฅ์ฅ์น, ์ ์ฅ์ฅ์น๊ฐ ๋ฒ์ค๋ก ์ฐ๊ฒฐ๋์ด ์..