在OC中調用Swift類中定義delegate出現:Property 'delegate' not found on object of type ...


找了許久沒找到答案, 在下面的鏈接中, 我解決了這個問題:

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對象, 顯示代理方法, 然后測試下, 這個問題就解決了...太坑了...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM