在 Objective-C 中使用 Swift 类
第 1 步:创建新的 Swift 类
将 .swift
文件添加到项目中,并将其命名为 MySwiftObject.swift
在 MySwiftObject.swift
:
import Foundation
class MySwiftObject : NSObject {
var someProperty: AnyObject = "Some Initializer Val"
init() {}
func someFunction(someArg:AnyObject) -> String {
var returnVal = "You sent me \(someArg)"
return returnVal
}
}
第 2 步:将 Swift 文件导入 ObjC 类
在 SomeRandomClass.m
:
#import "<#YourProjectName#>-Swift.h"
文件:<#YourProjectName#>-Swift.h
应该已经在项目中自动创建,即使你看不到它。
第 3 步:使用你的类
MySwiftObject * myOb = [MySwiftObject new];
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
myOb.someProperty = @"Hello World";
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
NSString * retString = [myOb someFunction:@"Arg"];
NSLog(@"RetString: %@", retString);
注意:
1. CodeCompletion 的表现不如我所希望的那样准确。在我的系统上,运行快速构建 w /“cmd + r”似乎有助于 Swift 找到一些 Objc 代码,反之亦然。
2. 如果你将 .swift
文件添加到较旧的项目并收到错误:dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
,请尝试完全重新启动 Xcode。
3. 虽然最初可以通过使用 @objc
前缀在 Objective-C 中使用纯 Swift 类,但在 Swift 2.0 之后,这已不再可能。有关原始说明,请参阅编辑历史如果在将来的 Swift 版本中重新启用此功能,则答案将相应更新。