본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다. 내용 전처리기를 알아보자. #define 명령문 #import 명령문 조건 컴파일(#ifdef, #if, #elif, #else, #endif, #ifndef, #undef) 전처리기는 컴파일 과정에서 프로그램 코드에 산재한 특별한 명령문을 인식합니다. 이 전처리 명령문을 만들기 위해서는 샵(#)을 줄의 맨 앞에 붙여야 한다. ✅ #define 명령문 #define 문의 주 용도는 상수에 심벌명을 부여하는 것이다. 다음의 전처리 명령문은 TRUE 라는 이름이 값 1과 동일하도록 정의하고, FALSE 라는 이름이 값 0과 동일하도록 정의한다. #define TRUE 1 #define ..
예를 들어 많은 객체들이 해당 클래스를 상속받아서 같은 뷰를 가져야 한다면 서브클래싱을 하는 것이 유용하다. 이를 통해 재사용성이 좋아진다. 그렇다면 무조건 서브클래싱을 하는 것이 좋을까? 고려할 사항에 대해서 생각해보자. 고려할 사항 서브클래싱을 하다보면 복잡하고 깊은 클래스들의 상속관계를 만들게 됩니다. 이때 서브클래싱을 하는 목적이 인터페이스만 공유하는 것이라면 프로토콜을 사용하는 것이 바람직할 수 있다. 또한, 많이 변경되거나 많은 구현사항을 다른 클래스에 위임하게 된다면(예를 들어, UITableViewDelegate 와 같은 delegate) 델리게이트를 사용하는 것이 훨씬 동적인 클래스를 만들기 유용하다. 클래스를 확장하기 위한 기능으로써 카테고리도 좋은 방법이다. 카테고리를 통해 확장된 클..
본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다. 내용 카테고리를 사용하여 모듈 방식으로 클래스에 메서드를 추가하는 방법 익명 카테고리를 통해 클래스 확장(Extension) 추가하는 방법 메서드의 표준화된 목록 만드는 방법 카테고리 카테고리는 클래스 정의를 그룹짓거나, 연관된 메서드를 카테고리로 쉽게 모듈러화 할 수 있게 해준다. 또한, 원본 소스 코드에 접근하거나 서브클래스를 생성하지 않고도 기존의 클래스 정의를 확장하는 방법도 제공한다. 그렇기 때문에 클래스 정의에 새 메소드를 추가하고 싶을 때나 프로젝트에서 서브클래스를 작성하고 새 메소드를 구현할 수 있지만 더 쉽고 강력한 방법이 바로 카테고리이다. Fraction 클래스에..
카테고리를 생성했는데 다음과 같이 인터페이스 위아래로 매크로가 있었다. 무엇일까? // Fraction+MathOps.h #import "Fraction.h" NS_ASSUME_NONNULL_BEGIN @interface Fraction (MathOps) @end NS_ASSUME_NONNULL_END Swift 가 등장하면서 Swift 의 null 의 호환성을 위해서(Objective-C 에서는 nil 이라고 합니다.) Xcode 6.3 부터 Objective-C 에 nullability 라는 것이 추가되었습니다. Swift 에서는 ? 를 통해 옵셔널을 표시하는데 컴파일러는 Objective-C 에서 해당 변수가 옵셔널인지 논옵셔널인지 알 수 있는 방법이 없기 때문이죠. 예를 들어, NSView 와 N..
* 본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다. 내용 변수의 범위, 객체의 초기화 메서드, 데이터 형에 대해 상세히 알아보자 Objective-C 컴파일러의 지시어를 사용하여 인스턴스 변수의 범위 조작 정적 변수, 전역 변수, 외부 변수 열거(enumerated) 데이터 형 typedef 1. 객체 초기화 객체를 초기화하고 나서 초깃값을 설정할 수 있다. // Initializes a newly allocated array by placing in it the objects contained in a given array. myArray = [[NSArray alloc] initWithArray: myOtherArray]; i..
본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다. 내용 다형성은 다른 클래스의 객체들이 동일한 메서드 이름을 사용할 수 있도록 해준다. 동적 타이핑은 객체가 속한 클래스를 알아내는 단계를 프로그램이 실행될 때로 미룬다. 동적 바인딩은 객체에 호출되는 실제 메서드를 알아내는 프로그램 실행 중으로 미룬다. 시작하기 코드를 준비해보자. Fraction.h #import // MARK: - Fraction Class // interface 부분은 클래스를 다른 파일에서 사용할 때 컴파일러가 필요로 하는 모든 정보를 담고 있다. @interface Fraction : NSObject @property int numerator, denomin..
- 서버통신
- 2022 KAKAO TECH INTERNSHIP
- Firebase
- Swift
- MOYA
- UserDefaults
- Widget
- WWDC
- IOS
- APNS
- MVVM
- Algorithm
- urlsession
- watchOS
- configurable widget
- github
- Protocol
- CloneCoding
- async/await
- SwiftUI
- YPImagePicker
- rxswift
- Notification
- WWDC22
- containerBackground
- projectsetting
- WidgetKit
- OpenSourceLibrary
- RxCocoa
- Objective-C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Total
- Today
- Yesterday