Objective-C和Swift的转换速查手册(推荐)

2020-01-09 09:11:09王振洲


//Swift
func loadAddress() -> (house: String, city: String, country: String) {
 return ("65, Park Street", "Bristol", "UK")
}

let (city, street, country) = loadAddress()

不接收参数没有返回的闭环



//Objective-C
void (^printUniversalGreeting)(void) = ^{
 NSLog(@"Bah-weep-graaaaagnah wheep nini bong");
};

printUniversalGreeting();


//Swift
let universalGreeting = {
 print("Bah-weep-graaaaagnah wheep nini bong")
}

universalGreeting()

不接收参数返回一个字符串的闭环



//Objective-C
NSString* (^getUniversalGreeting)(void) = ^{
 return @"Bah-weep-graaaaagnah wheep nini bong";
};

NSString *greeting = getUniversalGreeting();
NSLog(@"%@", greeting);


//Swift
let getUniversalGreeting = {
 return "Bah-weep-graaaaagnah wheep nini bong"
}

let greeting = getUniversalGreeting()
print(greeting)

接收一个字符串参数,返回一个字符串的闭环



//Objective-C
NSString* (^getGreeting)(NSString *) = ^(NSString *name) {
 return [NSString stringWithFormat:@"Live long and prosper, %@.", name];
};

NSString *greeting = getGreeting(@"Paul");
NSLog(@"%@", greeting);


//Swift
let getGreeting = { (name: String) in
 return "Live long and prosper, (name)."
}

let greeting = getGreeting("Paul")
print(greeting)

创建空类



//Objective-C
@interface MyClass : NSObject
@end

@implementation MyClass
@end


//Swift
class MyClass: NSObject {
}
//推荐使用结构代替类,这样也许不需要从NSObject继承了

创建有2个属性的类



//Objective-C
@interface User : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end

@implementation User

@end