iOS 在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的行为不如我希望的那样准确。在我的系统上,运行带有“cmd+r”的快速构建似乎可以帮助Swift查找一些Objc代码,反之亦然。
2.如果将.swift文件添加到较旧的项目中并出现错误:dyld:Librarynotloaded:@rpath/libswift_stdlib_core.dylib,请尝试完全重新启动Xcode。
3.虽然最初可以通过使用@objc前缀在Objective-C中使用纯Swift类,但是在Swift2.0之后,这不再可能。有关原始说明,请参见编辑历史记录。如果在以后的Swift版本中重新启用了此功能,则答案将相应更新。