본문 바로가기

전체 글67

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.
Swift 공식 문서 정리 - 고급 연산자 (Advanced Operators) 안녕하세요. 오늘은 Swift의 고급 연산자에 대해 알아보겠습니다. 기본 연산자보다 더 복잡한 값을 조작할 수 있는 비트 연산자, 사용자 정의 연산자, 그리고 결과 빌더까지 Swift가 제공하는 다양한 고급 기능을 살펴보겠습니다.📌 비트 연산자 (Bitwise Operators)비트 연산자는 데이터 구조 내의 개별 비트를 직접 조작할 수 있게 해주는 도구입니다. 저수준 프로그래밍, 그래픽 작업, 디바이스 드라이버 개발 등에 특히 유용합니다.비트 NOT 연산자 (~)비트 NOT 연산자는 모든 비트를 반전시킵니다. 0은 1로, 1은 0으로 바꿉니다.let initialBits: UInt8 = 0b00001111 // 이진수로 00001111 (십진수 15)let invertedBits = ~initial.. 2025. 4. 13.
Swift 공식 문서 정리 - 접근 제어 (Access Control) 안녕하세요. 오늘은 코드 구조화와 캡슐화에 필요한 '접근 제어(Access Control)'에 대해 알아보겠습니다. 접근 제어를 통해 코드의 어떤 부분을 외부에 노출하고, 어떤 부분을 숨길지 효과적으로 관리할 수 있습니다.📌 접근 제어란?접근 제어(Access Control)는 다른 소스 파일이나 모듈에서 코드에 접근하는 것을 제한하는 기능입니다. 이를 통해 코드의 구현 세부 사항을 숨기고, 코드가 사용될 수 있는 인터페이스를 명확하게 정의할 수 있습니다.접근 제어의 주요 목적:코드의 구현 세부 사항 숨기기코드 사용을 위한 명확한 인터페이스 정의실수로 인한 잘못된 코드 사용 방지내부 구현 변경 시 외부 코드에 미치는 영향 최소화📌 모듈, 소스 파일, 패키지의 이해Swift의 접근 제어를 이해하기 위해.. 2025. 4. 13.