[Objective-C] Objective-C 기초(1)
2024. 1. 13. 16:03
Swift를 공부하고 실무에서 Objective-C를 이용하곤 하여 Swift와 비교하여 포스팅하였다.
변수 선언
Objective-C
@property (strong, nonatomic) NSString *name;
- @property : 프로퍼티를 선언하는 키워드
- strong (강한 참조): 메모리 관리 정책, 주로 객체 타입의 프로퍼티에 사용
- nonatmoic : 프로퍼티의 접근 스레드 안전성(thread-safety)과 관련된 속성
- nonatmoic : 프로퍼티의 getter와 setter에 추가적인 스레드 안전장치를 제공하지 않음을 의미한다.
- atomic : 프로퍼티의 스레드 안전을 보장하지만 성능에 영향을 줄 수 있다.
클래스 선언 및 초기화
Swift
class MyClass {
var name: String
init() {
name = "DefaultName"
}
}
- 하나의 블록 내에서 클래스를 선언한다.
Objective-C
@interface MyClass : NSObject
@property (strong, nonatomic) NSString *name;
@end
@implementation MyClass
- (instancetype)init {
self = [super init];
if (self) {
_name = @"DefaultName";
}
return self;
}
@end
- @interface 키워드(인터페이스)와 @implementation(구현)이 분리되어 있다.
메서드 선언 및 호출
Swift
func myMethod(with parameter: String) {
print("Parameter: \(parameter)")
}
myObject.myMethod(with: "Hello") // 메서드 호출
Objective-C
- (void)myMethodWithParameter:(NSString *)parameter {
NSLog(@"Parameter: %@", parameter);
}
[myObject myMethodWithParameter:@"Hello"]; // 메서드 호출
블록과 클로저
Swift
let myClosure: (String) -> Void = { parameter in
print("Parameter: \(parameter)")
}
Objective-C
void (^myBlock)(NSString *) = ^(NSString *parameter) {
NSLog(@"Parameter: %@", parameter);
};
옵셔널
Swift
var optionalString: String?
Objective-C
@property (strong, nonatomic) NSString *optionalString; // 선언
NSString *optionalString = nil; // 사용
728x90