๐ฅ Bread Basics/Obj-c9 Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ค๋ ๋ฉ๊ณผ ๋๊ธฐํ ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์์ ๋ฉํฐ์ค๋ ๋ฉ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ค๋ ๋ ๊ฐ ๋๊ธฐํ๋ฅผ ์ํ @synchronized ์ง์์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.๐ ์ค๋ ๋ฉ ์ง์ ๊ฐ์Objective-C๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉํฐ์ค๋ ๋ฉ์ ์ง์ํฉ๋๋ค. ์ด๋ ๋ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ ํ๋ ค๊ณ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ด๋ฌํ ์ํฉ์ ํ๋ก๊ทธ๋จ์์ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.๋ฉํฐ์ค๋ ๋ฉ(Multithreading): ์ฌ๋ฌ ์คํ ํ๋ฆ(์ค๋ ๋)์ด ๋์์ ์คํ๋๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋๋ค.์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Objective-C๋ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์ฝ๋ ์น์ ์ ์คํํ ์ ์๋๋ก ๋ณดํธํ๋ @synchronized() ์ง์์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.์ฐธ๊ณ ๋ก ์ค๋ ๋ ๋๊ธฐํ์ ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์์ธ ์ฒ๋ฆฌ ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์ ์์ธ ์ฒ๋ฆฌ(Exception Handling)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.๐ Objective-C ์์ธ ์ฒ๋ฆฌ ๊ฐ์Objective-C ์ธ์ด๋ Java๋ C++๊ณผ ์ ์ฌํ ์์ธ ์ฒ๋ฆฌ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ตฌ๋ฌธ์ NSException, NSError ๋๋ ์ฌ์ฉ์ ์ ์ ํด๋์ค์ ํจ๊ป ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.์์ธ(Exception): ํ๋ก๊ทธ๋จ์ ์ ์์ ์ธ ์คํ ํ๋ฆ์ ์ค๋จ์ํค๋ ํน๋ณํ ์กฐ๊ฑด์ผ๋ก, ๋ค์ํ ์ค๋ฅ ์ํฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.๐ ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ ํ์ฑํํ๊ธฐObjective-C์์ ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ค๋ฉด GNU ์ปดํ์ผ๋ฌ ์ปฌ๋ ์ (GCC) ๋ฒ์ 3.3 ์ด์์์ -fobjc-exceptions ์ค์์น๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ ๋ ํฐ(Selector) ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์ ์ ๋ ํฐ(Selector)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.๐ ์ ๋ ํฐ๋ ๋ฌด์์ธ๊ฐ?Objective-C์์ ์ ๋ ํฐ๋ ๋ ๊ฐ์ง ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ค:์์ค ์ฝ๋์์ ๊ฐ์ฒด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋ ์ด๋ฆ์์ค ์ฝ๋๊ฐ ์ปดํ์ผ๋ ๋ ์ด๋ฆ์ ๋์ฒดํ๋ ๊ณ ์ ์๋ณ์ (ํ์ : SEL)์ ๋ ํฐ(Selector): ๋ฉ์๋๋ฅผ ์๋ณํ๋ ๊ณ ์ ์๋ณ์๋ก, ๋ฐํ์์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.๋ชจ๋ ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ ๋์ผํ ์ ๋ ํฐ๋ฅผ ๊ฐ์ง๋๋ค. ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ผ๋ฉฐ, ์ด๋ Cocoa์ ํ๊ฒ-์ก์ (target-action) ๋์์ธ ํจํด ๊ตฌํ์ ๊ธฐ์ด๊ฐ ๋ฉ๋๋ค.๐ ๋ฉ์๋์ ์ ๋ ํฐ์ ๊ด๊ณํจ์จ์ฑ์ ์ํด ์ปดํ์ผ๋ ์ฝ๋์์๋ ์ ์ฒด ASCII ์ด๋ฆ์ด ๋ฉ์๋ ์ ๋ ํฐ๋ก ์ฌ์ฉ๋์ง .. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ ์ ๋์ ์ดํดํ๊ธฐ ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์ ์ ์ ํ์ดํ(Static Typing)๊ณผ ๊ทธ ์๋ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ Objective-C์ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํนํ Objective-C์ ๋์ ํน์ฑ์ ์ผ์์ ์ผ๋ก ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณผ ์์ ์ ๋๋ค.๐ ๊ธฐ๋ณธ ๋์ ๋์(Default Dynamic Behavior)Objective-C๋ ์ค๊ณ์ ๊ฐ์ฒด๊ฐ ๋์ ์ํฐํฐ์ ๋๋ค. ๊ฐ์ฒด์ ๊ดํ ๋ง์ ๊ฒฐ์ ์ด ์ปดํ์ผ ์๊ฐ์ด ์๋ ๋ฐํ์์ผ๋ก ๋ฏธ๋ค์ง๋๋ค:๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ํด๋์ค ๋ฉ์๋์ ์ํด ๋ฐํ์์ ๋์ ์ผ๋ก ํ ๋น๋ฉ๋๋ค.๊ฐ์ฒด๋ ๋์ ์ผ๋ก ํ์ ์ด ์ง์ ๋ฉ๋๋ค. ์์ค ์ฝ๋(์ปดํ์ผ ์๊ฐ)์์ ๊ฐ์ฒด์ ํด๋์ค๊ฐ ๋ฌด์์ด๋ ์๊ด์์ด ๋ชจ๋ ๊ฐ์ฒด ๋ณ์๋ id ํ์ ์ด ๋ ์ ์์ต๋๋ค.๋ฉ์์ง์ ๋ฉ์๋๋ ๋์ ์ผ๋ก ๋ฐ.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ๋น ๋ฅธ ์ด๊ฑฐ(Fast Enumeration) ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์์ ์ปฌ๋ ์ ์ ์์๋ฅผ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋ ๋น ๋ฅธ ์ด๊ฑฐ(Fast Enumeration) ๊ธฐ๋ฅ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. iOS/macOS ๊ฐ๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด ์ ์ฉํ ๊ธฐ๋ฅ์ ์์ธํ ์์๋ด ์๋ค.๐ ๋น ๋ฅธ ์ด๊ฑฐ๋ ๋ฌด์์ธ๊ฐ?๋น ๋ฅธ ์ด๊ฑฐ๋ ์ปฌ๋ ์ ์ ๋ด์ฉ์ ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ์ด๊ฑฐํ ์ ์๋๋ก ํด์ฃผ๋ Objective-C์ ์ธ์ด ๊ธฐ๋ฅ์ ๋๋ค. ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด, ๋์ ๋๋ฆฌ, ์ธํธ ๋ฑ์ ์ปฌ๋ ์ ์์๋ฅผ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.๋น ๋ฅธ ์ด๊ฑฐ(Fast Enumeration): Objective-C์์ ์ปฌ๋ ์ ์ ์์๋ฅผ ํจ์จ์ ์ผ๋ก ์ํํ๊ธฐ ์ํ ์ธ์ด ๊ธฐ๋ฅ์ผ๋ก, for...in ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.๐ for...in ๊ตฌ๋ฌธ๋น ๋ฅธ ์ด๊ฑฐ์ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค:for (Ty.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ฐ๊ด ์ฐธ์กฐ(Associative References) ์๋ ํ์ธ์! ์ด๋ฒ์๋ Objective-C์ ์ฐ๊ด ์ฐธ์กฐ(Associative References)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ์ ์ธ์ ์์ ํ์ง ์๊ณ ๋ ๊ฐ์ฒด์ ์ ์ฅ ๊ณต๊ฐ์ ์ถ๊ฐํ ์ ์์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.๐ ์ฐ๊ด ์ฐธ์กฐ๋?OS X v10.6๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฐ๊ด ์ฐธ์กฐ๋ ๊ธฐ์กด ํด๋์ค์ ๊ฐ์ฒด ์ธ์คํด์ค ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค. ์ฐ๊ด ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋์ค ์ ์ธ์ ์์ ํ์ง ์๊ณ ๋ ๊ฐ์ฒด์ ์ ์ฅ ๊ณต๊ฐ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.์ฐ๊ด ์ฐธ์กฐ(Associative References): ๊ธฐ์กด ํด๋์ค์ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ฐํ์์ ๊ฐ์ฒด์ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค.์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ํนํ ์ ์ฉํฉ๋๋ค:ํด๋์ค์ ์์ค ์ฝ๋์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ์ด.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - Categories์ Extensions ์๋ ํ์ธ์. ์ค๋์ Objective-C์ Categories์ Extensions์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธฐ๋ฅ๋ค์ ๊ธฐ์กด ํด๋์ค์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์ ์ฉํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.๐ Categories์ Extensions ๊ฐ์Category๋ ๊ธฐ์กด ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ์ง์ด ์์ค ์ฝ๋๊ฐ ์๋ ํด๋์ค์๋ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค! Categories๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ธํด๋์ฑ ์์ด๋ ๊ธฐ์กด ํด๋์ค์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ผ๋ฉฐ, ์์ ์ ํด๋์ค ๊ตฌํ์ ์ฌ๋ฌ ํ์ผ์ ๋ถ์ฐ์ํฌ ์๋ ์์ต๋๋ค.Class Extensions(ํ์ฅ)์ Categories์ ์ ์ฌํ์ง๋ง, ์ฃผ ํด๋์ค์ @interface ๋ธ๋ก ์ธ๋ถ์์ ํด๋์ค์ ํ์ํ ์ถ๊ฐ API๋ฅผ ์ ์ธํ ์ ์๊ฒ ํด์ค๋๋ค.Category: ๊ธฐ์กด ํด๋์ค์ ์.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ ์ธ๋ ํ๋กํผํฐ(Declared Properties) ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์ '์ ์ธ๋ ํ๋กํผํฐ(Declared Properties)'์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.๐ ์ ์ธ๋ ํ๋กํผํฐ ๊ฐ์์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด์ ์์ฑ(attributes)๊ณผ ๊ด๊ณ(relationships)์ ์ ๊ทผํ ๋๋ ์ ๊ทผ์(accessor) ๋ฉ์๋ ์, ์ฆ getter์ setter๋ฅผ ํตํด ์ ๊ทผํฉ๋๋ค. ์ด ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์บก์ํ(encapsulation) ์์น์ ์งํค๊ณ , API ์ฌ์ฉ์๋ ๊ตฌํ ๋ณ๊ฒฝ์์ ๊ฒฉ๋ฆฌ๋ ์ฑ๋ก ์ ์ง๋ฉ๋๋ค.์บก์ํ(Encapsulation): ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ์จ๊ธฐ๊ณ ์ค์ง ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ์์น์ ๋๋ค.ํ์ง๋ง ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ ์ง๋ฃจํ ๊ณผ์ ์ด๋ฉฐ, API ์๋น์์๊ฒ ์ค์ํ ์ ์.. 2025. 4. 14. Obj-C ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ํ๋กํ ์ฝ ์๋ ํ์ธ์. ์ด๋ฒ์๋ Objective-C์ ์ค์ํ ๊ฐ๋ ์ค ํ๋์ธ ํ๋กํ ์ฝ(Protocol)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํ๋กํ ์ฝ์ ๋ค๋ฅธ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ์ธํฐํ์ด์ค(interface)์ ์ ์ฌํ ๊ฐ๋ ์ผ๋ก, ํด๋์ค๊ฐ ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋ ๋ชฉ๋ก์ ์ ์ธํฉ๋๋ค.ํ๋กํ ์ฝ์ด๋?ํ๋กํ ์ฝ์ ์ด๋ค ํด๋์ค๋ ๊ตฌํํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ์ธํฉ๋๋ค. ํด๋์ค ์ ์์ ๋ฌ๋ฆฌ ํ๋กํ ์ฝ์ ์ค์ ๊ตฌํ์ ํฌํจํ์ง ์๊ณ , ๋จ์ง ๋ฉ์๋ ์ ์ธ๋ง ์ ๊ณตํฉ๋๋ค.ํ๋กํ ์ฝ(Protocol): ํด๋์ค๊ฐ ๊ตฌํํ ์ ์๋ ๋ฉ์๋ ๋ชฉ๋ก์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํด๋์ค๊ฐ "์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํ๋ค"๋ ๊ณ์ฝ๊ณผ ๊ฐ์ต๋๋ค.๐ ํ๋กํ ์ฝ์ ์ฌ์ฉ ์๋๋ฆฌ์คํ๋กํ ์ฝ์ ๋ค์ ์ธ ๊ฐ์ง ์ํฉ์์ ํนํ ์ ์ฉํฉ๋๋ค:1. ๋ค๋ฅธ ํด๋์ค๊ฐ ๊ตฌํํ ๋ฉ์๋ ์ ์ธํ๊ธฐํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์.. 2025. 4. 14. ์ด์ 1 ๋ค์