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: Library not loaded: @rpath/libswift_stdlib_core.dylib,请尝试完全重新启动Xcode。

3.虽然最初可以通过使用@objc前缀在Objective-C中使用纯Swift类,但是在Swift 2.0之后,这不再可能。有关原始说明,请参见编辑历史记录。如果在以后的Swift版本中重新启用了此功能,则答案将相应更新。