Swift 是 Apple 开发的一门新语言,用于 IOS 和 macOS 开发。相比 Objective-C,它有以下优缺点:
优点:
- 语法更简洁。删除了前缀hdr和m文件、分号和括号。
- 类型推断。变量声明可以不写类型,编译器会推断。
- 构建跟OC对象兼容。可以混编使用。
- 可选类型。用?表示可选类型,需要解包后使用。
- 枚举更强大。可以有关联值,原始值,可以定义方法。
- 集合类型丰富。有数组,字典,集合等。
- 支持泛型。
- 闭包简单。可以捕获环境变量。
- 增强的switch语句。不需要break,可以匹配范围和元组。
- 错误处理机制。使用do-catch语句进行错误处理。
缺点:
- 迁移成本高。需要转换现有OC代码。
- 第三方库支持度低。许多OC库没有Swift版本。
- 开发者学习曲线高。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];