什么是 Swift?和 Objective-C 相比有哪些优缺点?代码举例讲解

Swift 是 Apple 开发的一门新语言,用于 IOS 和 macOS 开发。相比 Objective-C,它有以下优缺点:

优点:

  1. 语法更简洁。删除了前缀hdr和m文件、分号和括号。
  2. 类型推断。变量声明可以不写类型,编译器会推断。
  3. 构建跟OC对象兼容。可以混编使用。
  4. 可选类型。用?表示可选类型,需要解包后使用。
  5. 枚举更强大。可以有关联值,原始值,可以定义方法。
  6. 集合类型丰富。有数组,字典,集合等。
  7. 支持泛型。
  8. 闭包简单。可以捕获环境变量。
  9. 增强的switch语句。不需要break,可以匹配范围和元组。
  10. 错误处理机制。使用do-catch语句进行错误处理。

缺点:

  1. 迁移成本高。需要转换现有OC代码。
  2. 第三方库支持度低。许多OC库没有Swift版本。
  3. 开发者学习曲线高。OC开发者需要时间学习新语法。

下面是Swift和OC的代码示例对比:

Swift:

swift
class Person {
    var name: String?

    func printName() {
        if let name = name {
            print("Name: ", name)
        } else {
            print("Name: Empty")
        }
    }
}

let person = Person()
person.name = "John"
person.printName()

Objective-C:


objc
@interface Person : NSObject

@property (copy, nonatomic) NSString *name;

- (void)printName;

@end

@implementation Person

- (void)printName {
    if (self.name) {
        NSLog(@"Name: %@", self.name);
    } else {
        NSLog(@"Name: Empty"); 
    }
}

@end   

Person *person = [[Person alloc] init];
person.name = @"John";
[person printName];