找了許久沒找到答案, 在下面的連結中, 我解決了這個問題:
http://stackoverflow.com/questions/26366082/cannot-access-property-of-swift-type-from-objective-c
// Swift -------------------------------- @objc protocol FooDelegate:NSObjectProtocl {
func bar()
} class Foo: UIViewController {
weak var delegate: FooDelegate?
...
} // OC ----------------------------------- - (void)viewDidLoad
{
[super viewDidLoad]; Foo *foo = [[Foo alloc] init]; foo.delegate = self;
} // 實現代理方法
- (void)bar { }
這裡的代理使用weak修飾避免迴圈引用, 但是單單加上weak會提示錯誤, 需要在協議後面加上NSObjectProtocol, 才可以進行修飾
另外, 最關鍵的一點來了, 協議前面需要加上@obj, 因為OC中並沒有optional這種玩意(不知道是不是因為這個原因..), 所以在OC中呼叫的時候是會報錯的
加上@obj後, 在OC中的delegate顯示為id物件, 顯示代理方法, 然後測試下, 這個問題就解決了...太坑了...