【发布时间】:2014-08-12 13:54:44
【问题描述】:
我在 Swift 中编写了SearcherProtocol,需要实现一个必须使用此协议的 Objective-C 类 FileSearcher。
所以我尝试了这个:
#import <Foundation/Foundation.h>
@interface FileSearcher : NSObject <SearcherProtocol>
// ... class content
@end
编译器告诉我
找不到“SearcherProtocol”的协议声明
相应的桥接头文件 (modulename-Swift.h) 正在FileSearcher.m 中导入。
将SearcherProtocol 导入FileSearcher.h 会引发另一个编译器错误:module name-swift.h file not found
有人知道我做错了什么吗?
我正在使用 Xcode 6 Beta 5。
编辑
这是 Swift 中的协议声明:
@objc protocol SearcherProtocol
{
var searchNotificationTarget: SearchCompletedProtocol? { get }
var lastSearchResults: [AnyObject] { get set }
func search(searchParam: String, error: NSErrorPointer) -> Bool
}
还有 SearchCompletedProtocol:
@objc protocol SearchCompletedProtocol
{
func searchCompletedNotification(sender: AnyObject!)
}
【问题讨论】:
-
协议是否使用
@objc标志声明? -
是的。查看生成的头文件告诉我它就在那里。
-
你能给我们看一下协议声明吗?
-
当然。我明天会发布(我现在不在办公室)。
-
如果有人发现他们的 Swift Delegate 协议未找到并且他们同时使用 Objective-C 和 Swift,那是因为您缺少 @objc 标志。
标签: objective-c swift