[英]Export Swift framework for the usage in Objective-C
我正在使用Swift创建一个框架,以用于我的大学的Objective-C项目。 我创建了一个新项目,并选择了Cocoa Touch Framework并将其命名为printFramework 。 我已使用以下代码将Swift文件添加到项目中:
import Foundation
@objc public class printClass : NSObject {
@objc public override init() {
print("My name is init")
}
@objc public func printMe(){
print("Hello Wrold")
}
}
我使用目标Generic iOS设备构建了上面的代码(构建成功),现在我有了一个公文包(框架)文件,并且在Product下,并且使用Objective-C语言创建了一个名为prinFrameTest的 单视图应用程序项目。 我将框架复制到项目中,在“ 链接的框架和库”下的“ 常规”选项卡中,我有我的printFramwork ,在“ 嵌入式二进制文件”中的上面,我添加了我的printFramework 。
在我的ViewController.m
我有以下代码:
#import "ViewController.h"
@import printFramework;
#import <printFramework/printFramework-Swift.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
printClass *pr;
[pr printMe];
}
@end
我构建并运行了它(它成功运行了),模拟器打开了,但是代码不起作用(意味着它在日志中不打印任何内容)。
怎么了?
如果您在[pr printMe]
行上放置一个断点并检查pr
的值,您可能会发现它是一个空引用-您尚未创建该对象,只是分配了一个可以保存引用的变量到printClass
的实例。 尝试这种方式:
[[printClass new] printMe];
[[YourClass alloc] init]
使其起作用 Always embed Swift standard libraries
Generic iOS Device
构建不会产生通用框架 您需要创建一个非nil对象
printClass *pr = [printClass new];
要么
printClass *pr = [[printClass alloc] init];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.