[swift] Objective-C와 Swift에서의 옵셔널과 강제 언래핑 처리 방식 차이

Objective-C와 Swift는 모두 Cocoa 및 Cocoa Touch 프레임워크에서 개발을 지원하는 프로그래밍 언어입니다. 두 언어에서 옵셔널과 강제 언래핑 처리 방식에 대한 차이점이 있습니다.

옵셔널 처리

Objective-C

Objective-C에서는 옵셔널 변수가 기본적으로 지원되지 않습니다. 따라서 변수가 nil인지 여부를 확인하기 위해 조건문을 사용해야 합니다.

NSString *name = nil;
if (name == nil) {
    NSLog(@"Name is nil");
} else {
    NSLog(@"Name is %@", name);
}

Swift

Swift에서는 변수의 값이 존재하지 않을 수 있는 옵셔널 형식을 명시적으로 표현합니다. Optional 형식은 변수명 뒤에 ?를 붙여 나타냅니다.

var name: String? = nil
if name != nil {
    print("Name is \(name!)")
} else {
    print("Name is nil")
}

강제 언래핑 처리

Objective-C

Objective-C에서는 값을 강제로 추출하기 위해 프로그래머가 변수가 nil인지 여부를 직접 확인해야 합니다.

NSString *name = @"John";
NSLog(@"Name is %@", name);

Swift

Swift에서는 옵셔널 변수를 강제로 언래핑하기 위해 느낌표(!)를 사용합니다.

var name: String?
name = "John"
print("Name is \(name!)")

두 언어 모두 옵셔널과 강제 언래핑 처리 방식에서 차이가 있지만, Swift에서는 옵셔널을 명시적으로 표현하므로 안전한 코딩을 할 수 있는 장점이 있습니다.

결론

Objective-C와 Swift에서 변수의 값이 존재하지 않을 수 있는 경우를 처리하는 방식에 차이가 있습니다. Swift에서는 변수의 옵셔널 여부를 명시적으로 표현함으로써 안전한 코딩을 할 수 있습니다.

References

  1. The Swift Programming Language - The Basics
  2. Apple Developer Documentation - Working with Cocoa Frameworks