【发布时间】:2015-01-20 20:24:49
【问题描述】:
环境:Xcode 6.1.1 & Xcode 6.2 Beta
问候:
我需要在同一项目中的相邻 Objective-C 文档中的 Swift 文档中发布 NSString。例如,在 Swift 页面上显示用 Objective-C 生成的“Hello World”。
我做了一个概念验证演示;根据反馈。
我正在考虑通过协议模式使用 ObjC --> Swift 委托,如下所示:
注意:Swift 文件是委托。
在这里,我从 Objective-C 调用 Swift 中的委托方法:
#pragma mark - Action methods
- (IBAction)sendDelegateAction:(UIButton *)sender {
[_delegate radiusString:@"Hello World"];
}
我已经实例化了 Objective-C 文件以将委托链接到实例(我希望我做对了):
let geo32Controller = MyObjCTableViewController()
geo32Controller.delegate = self
到目前为止,编译器抱怨找不到 Swift 协议。
这是协议(在 Swift 中声明):
@objc protocol DiscoveryContributeProtocol {
// optional
func radiusString(radiusString:String)
}
这是 Objective-C 头文件中对该协议的委托引用:
@interface MyObjCTableViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, weak) id<DiscoveryContributeProtocol> delegate;
@end
但是,编译器找不到协议:
顺便说一句:当我将桥引用放在 ObjC 的头文件中时,出现编译器错误:
两个问题:
- 我的模式是否正确(我是否正确实例化了 ObjC)?
- 如何让 Objective-C 部分看到代理链接的 Swift 协议?
【问题讨论】:
标签: objective-c swift delegation