๐ iOS26 [NSCache&URLCache]์ ์ด๋ฏธ์ง ํ์ผ์ด URLCache์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๋์คํฌ์ ์ ์ฅ๋ ๊น? ์๋ ํ์ญ๋๊น, ๋ฏผํธ์ ๋๋ค. ๐๋ฐ์ดํฐ๋ค์ ์ด๋์ ์ ์ฅ๋๊ณ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ๊น์?๋จผ์ ํ๋ ๋์คํฌ์ ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ๋ค์ด ์ ๋ถ ์ ์ฅ๋ฉ๋๋ค. ๋๋ฌธ์ ํ๋ ๋์คํฌ๋ ์ฉ๋์ด ๋งค์ฐ ํฌ๊ณ , ๊ธฐ์ต์ ํ๋ ๊ฒ์ ์น์ค๋์ด ์์ต๋๋ค.RAM, ๋ฉ๋ชจ๋ฆฌ๋ ๊ทธ๋ฌํ ํ๋ ๋์คํฌ์์ ์ฑ์ ์คํํ๋๋ฐ์ ํ์ํ ์ค์ ๋ฐ์ดํฐ๋ค์ ๋ค๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๋ด์ฉ์ ๋ฐฉ๋ํ๊ณ , RAM์ ๋์คํฌ๋ณด๋จ ๊ธฐ์ตํ ์ ์๋ ์์ด ์ ๊ณ , CPU์ ๊ฐ๊น์์ ๋น ๋ฅด์ง๋ง ์ด์ฐ ๋์๊ฑด ๊ธฐ์ต์ ํ๋ ๊ฒ์๋ง ๋ฅ๋ ฅ์ด ์น์ค๋์ด ์์ต๋๋ค.CPU๋ RAM์์ ๋ฐ์ ๋ฐ์ดํฐ๋ค์ ์ด์ฉํด ์ฑ์ ์คํํฉ๋๋ค. ๊ธฐ์ต๋ณด๋ค๋ ์ฑ๋ฅ์ด ์ค์ํด, ๊พธ์คํ๊ฒ ์ฑ๋ฅ์ด ์ ๊ทธ๋ ์ด๋ ๋์ด ์์ต๋๋ค. ๋๋ฌธ์ RAM๊ณผ CPU๋ ๊ธฐ์ต๊ณผ ์ฑ๋ฅ์ผ๋ก ๊ฐ์์ ๋ชฉ์ ์ด ๋ค๋ฅด๊ธฐ์ ์๋ก์๋ก ์ฑ๋ฅ์ฐจ์ด๊ฐ ์ ์ ์ฌํ๊ฒ ๋๊ฒ ๋ฉ๋๋ค. .. 2024. 1. 28. [iOS] Test ํ์ผ์ ๋ฃ์ Asset ์์ฑ์ ์ค๋ฅ_ Bundle ์ฌ์ฉ ํ ์คํธ์ฉ JSON ํ์ผ์ ์ดํ์๋ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๊ธฐ์ test ํด๋์ ๋ฐ๋ก Asset catalog๋ฅผ ๋ง๋ค์ด์ ๊ทธ๊ณณ์์๋ง ๋ฃ์ด๋๊ณ ์ฌ์ฉํ๊ณ ์ถ์๋ค. ๋๋ฌธ์ ํด๋๋ฅผ ํ๋ ๋ง๋ค์ด์ ์ด๋ฆ์ Json.xcassets ์ผ๋ก ์ ์ธํ๊ณ ๊ทธ ์์ ํ์ผ์ ๋ฃ์๋ค. ๊ทธ๋ฐ๋ฐ asset catalog์ ๋ชจ์์ด ๊ธฐ์กด์ ๊ฒ๊ณผ๋ ๋ฌ๋๋ค. ํ์ธํด๋ณด๋ asset catalog๋ฅผ ๋ง๋ค๋๋ ๋จ์ํ๊ฒ ํด๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ File → New → File์ ํ๊ณ ๋ค์ด๊ฐ Resource์ Asset Catalog๋ฅผ ์ ํํ์ฌ ๋ง๋ค์ด์ผ ํ๋ค. ๊ทธ ํ test code๋ฅผ ์์ฑํ์ฌ ๋๋ฆฌ๋๋ฐ ์ด๋ฒ์๋ NSDataAsset์ ๊ฐ์ ธ์ค๋ guard๋ฌธ์์ ๊ณ์ retrun์ผ๋ก ๋น ์ง๋ฉฐ ์ข ๋ฃ๋์๋ค. guard let json = NSDataAsset(n.. 2024. 1. 28. [UIKit]loadView์ view๋ ์ธ์ ํ ๋น๋ ๊น? ์๋ ํ์ญ๋๊น, ๋ฏผํธ์ ๋๋ค. ๐loadView์ View๋ ์ธ์ ํ ๋น๋ ๊น์?์ฝ๋๋ฒ ์ด์ค๋ก ์ง ์ฝ๋์์ ์คํํด ๋ณธ ๋ด์ฉ์ ๋๋ค. ์์์ผ๋ก๋, super.loadView()๊ฐ ์คํ๋๊ธฐ ์ ๊น์ง๋ view๊ฐ nil์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋๋ฌธ์ LLDB๋ก view๋ฅผ loadView() ํจ์ ๋ด๋ถ์์ ์ฐ์ด๋ณด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์์๊ณผ๋ ๋ค๋ฅธ ์ผ์ด ์์์ต๋๋ค. super.loadView()๊ฐ ๋ถ๋ฆฌ๊ธฐ ์ ์ po view๋ก ์ฐ์ด๋ณด๋, loadView์ loadView๋์ด ์ฐํ๋๋, ๊ฐ์ด ๋จ๋ ๊ฒ์ ๋๋ค! ์ฐธ๊ณ ๋ก ์์ UIViewController์ view๋ (id) 0x0์ผ๋ก ํ ๋น๋์ด ์์ง ์์์ต๋๋ค. ์ค๋ฅ์ธ๊ฐ? ์ view๊ฐ ์ฐํ์ง?๊ทธ๋์ loadView()๋ฅผ ์ฌ๋ฌ๋ฒ ์ฐ์ด๋ณด๊ณ ํ๋์ฉ ๋ด๋ ค๊ฐ๋ฉด์ po v.. 2024. 1. 27. [๋์์ธ ํจํด]Observer Pattern ์ท๊ฐ๊ฒ์์ ์ผํ ๋ ์์๋ ์ผ์ด๋ค. ์ฐ๋ฆฌ๋ ๋ฌด์์์ ์ผ๋ก ํ ์ธ ํ์ฌ๋ฅผ ์ด์๋๋ฐ ํ์ด๋ฐ์ ๋์น ์๋๋ค์ด ํ๊ฒฐ๊ฐ์ด ํฌ๋๊ฑฐ๋ฆฌ๊ณ ๋ ํ๋ค. ํ ์ธ ํ ๋ ๋ฌธ์ ์ข ์ฃผ๋ฉด ์ข๊ฒ ๋ค๊ณ . ๋งค๋ฒ ๋ฉฐ์น ์ ๊น์ง ํ ์ธ ํ๋ค๋ ๊ฑธ ์๊ณ ๋๋ฉด ์์ํ๋ค๊ณ . ์ต์ ๋ฒ ํจํด์ ์ด๋ฌํ ์๋๋ค์ ์ํ ๋ฌธ์ ๋ฐ์ก๊ณผ ๊ฐ๋ค. “๊ด์ฐฐ์”๋ผ๋ ๋จ์ด๋ฅผ ๋ณด๋ฉด ํด๋น ์ด๋ฆํ๋ฅผ ๋ฌ๊ณ ์๋ ๊ฐ์ฒด๋ ์ด๋ ํ ์ญํ ์ ์ํํ ๊ฒ ๊ฐ์๊ฐ? ๋๊ตฐ๊ฐ๋ฅผ ๋ฉด๋ฐํ ์ง์ผ๋ณด๋ ์ญํ ์ ์๋๊น? ์ต์ ๋ฒ ํจํด์์๋ ์ด ์ต์ ๋ฒ์ ์๋ฏธ๊ฐ ์กฐ๊ธ ๋ค๋ฅด๋ค. ๋จ์ํ ์ง์ผ๋ณธ๋ค, ๋ณด๋ค๋ `์ฐ๋ฝ์ ๊ธฐ๋ค๋ฆฐ๋ค`๋ผ๋ ๊ฒ์ด ๋ ์ณ์ ํํ์ผ ๊ฒ์ด๋ค. ๋ง์น ์ท๊ฐ๊ฒ ํ ์ธ ํ์ฌ ๋ฌธ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๋๊ณผ ๊ฐ๋ค. ์ท๊ฐ๊ฒ๋ฅผ ์ฃผ์ํ๊ณ , ๊ด์ฐฐํ์ง๋ง ๊ฒฐ๊ตญ ์ท๊ฐ๊ฒ์์ ๋ฌธ์๋ฅผ ๋ณด๋ด์ฃผ์ด์ผ ์๋์ ํ๋์ ๊ฒฐ์ ํ ์ ์๋ค. ์ท๊ฐ๊ฒ๋ฅผ ๋ค๋ฆด์ง, .. 2024. 1. 27. [iOS] TableViewCell์์ layoutMarginsGuide ์ฌ์ฉ ํ ์ด๋ธ๋ทฐ์ Custom Cell์ ์ค์ ํ ๋ ์ฒ์์ ์ ์ฝ์กฐ๊ฑด์ ContentView์๋ง ๋ง์ท๋ค. private func configureCellConstraint() { NSLayoutConstraint.activate([ contentStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), contentStackView.topAnchor.constraint(equalTo: contentView.topAnchor), contentStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), contentStackView.bottomAnchor.constraint(e.. 2024. 1. 6. [iOS] CoreData์์ ํน์ Entity ๋ด๋ถ์ ์๋ Entity์ ํน์ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋(NSPredicate) ์ฝ์ด๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐ์ตํ๋ค๊ฐ ์๊ธด ์ผ์ด๋ค. ๋จผ์ entity๋ก๋ UserMO์ JokeMO ๋๊ฐ๊ฐ ์๋ค. User์ Joke๋ Model๋ ์๋ค. ์ฌ๊ธฐ์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด User๋ Joke ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์๋ค. ๋๋ฌธ์ ํน์ ํ User์ ํน์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ฐ๋ Joke๋ง ์ ๋ณํ๊ณ ์ถ์ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์์๋ค. func fetchWithPredicate(currentUser: User, currentCategory: Category) -> [Joke] { var jokes = [Joke]() let fetchRequest: NSFetchRequest = UserMO.fetchRequest() let idPredicate = NSPredicate(format: "id = %@", currentUs.. 2023. 12. 20. [iOS] storyboard์์ custom init์ ํ ๊ฒฝ์ฐ required init์ด ํ์ํ ์ด์ view controller์์ init์ ์์ฑํด์ฃผ๋ ค๋ฉด ์ required init์ด ํ์ํ ๊น? required init์ ํ์ ์์ฑ์๋ก ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๋์ด ์๋ค๋ฉด ์์ ํด๋์ค์์๋ ํ์๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋ค. ๋จ, ์ง์ ์์ฑ์๋ฅผ ๋ฐ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ์๋ง. ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ค์ ๊ทธ๋๋ก ๋ฐ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก ์์ฑํด ์ค ํ์๊ฐ ์๋ค. view controller๋ UIViewController๋ฅผ ์์๋ฐ๋๋ค. class firstViewController: UIViewController ๊ทธ๋ฆฌ๊ณ UIViewController๋ NSCoding์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ฑํํ๊ณ ์๋ค. class UIViewController: NSCoding ์ด NSCoding ํ๋กํ ์ฝ์๋ required init์ผ๋ก NSCoder๋ฅผ .. 2023. 11. 9. [Swift]super.init()์ด ๋ฐ๋์ ํ์ํ๋ ๊ฒฝ์ฐ ์๋ ํ์ญ๋๊น, ๋ฏผํธ์ ๋๋ค. ๐ super.init()์ ๋ํด์ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ค ์ ๊ธฐํ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ต๋๋ค.class A { init(some: String) { print("a") }} A์ ๊ฐ์ด ๋งค๊ฐ๋ณ์๊ฐ ์๋ init์ ๊ฒฝ์ฐ์๋, ์์์ ํด์ ๋ด๋ถ์ ๋ณํ๋ฅผ ์ค ๋class B: A { override init(some: String) { super.init(some: some) print("b") }}๋ฐ๋์ super.init์ ๋ถ๋ฌ์ผ ํ๋ค๋ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ด์ต๋๋ค. 2๋จ๊ณ ์ด๊ธฐํ์์ ๋ณด๋ฉด, customize๋ ์ด๊ธฐํ๋ 1. superClass์ subclass๊ฐ ์์ ๋ subClass ์ด๊ธฐํ 2. superClass ์ด๊ธฐํ ์์ผ๋ก ์ฌ๋ผ๊ฐ.. 2023. 11. 8. ์ด์ 1 2 3 ๋ค์