새소식

iOS/Objective-C

[Objective-C] Objective-C 기초(1)

  • -

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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.