我目前正在我的ObjC
项目中处理一些 Swift 类。
我遇到的问题如下:
我在 ClassA.h 中声明了这个协议:
@protocol MyProtocol <NSObject>
- (void)complexMethodWithArg1:(id)arg1 arg2:(id)arg2 arg3:(id)arg3;
- (Folder *)currentDestinationFolder;
- (Flow)currentFlow;
@end
很标准的东西。
现在我的目标是拥有一个 swift 类,其属性是实现此协议的对象。所以很自然地,我将我的类添加到 swift 桥接头中:
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "ClassA.h"
并在 ClassB 下的 swift 文件中声明我的属性,该文件UIViewController
实现了另一个协议
class ClassB : UIViewController, AnotherProtocol {
var delegate:MyProtocol?
}
这里的问题是:我想在viewDidLoad
. 它适用于所有这些方法,除了一种不会自动完成的方法,并且如果手动输入会出错:
override func viewDidLoad() {
self.delegate?.currentDestinationFolder() // works great, no problem
self.delegate?.currentFlow() // works great, no problem
self.delegate?.complexMethodWithArg1(arg1: arg1, arg2: arg2, arg3: arg3) // PROBLEM : no autocompletion, error if entered manually !
super.viewDidLoad()
}
我不知道发生了什么,它与可选或必需的协议方法无关,与我的委托属性是可选的(尝试展开)这一事实无关。
有没有人面临类似的问题?似乎是某种错误?