2016-01-08 85 views
-1

沒有特定類型或協議實現的屬性。當調用委託方法,任何事情都會發生 - 編譯器會信任你,如果它可以看到一個方法某處存在和運行時會檢查你是否在說謊如何在swift中聲明specfic類型的委託方法?

我想這樣的方式迅速

@property (nonatomin,strong)id delegate; 

不喜歡一個協議實現

@property (nonatomin,strong)id <protocol> delegate; 

回答

0

這裏是你如何定義在迅速協議和委託:

您可以定義原任何地方都可以。例如:

protocol DemoProtocol{ 

    func doSomething(str: String){ 
    //Do Something when delegate fires 
    } 
} 

下面是你可以在任何從你需要調用委託類的定義委託:

//Protocol Delegate 
var delegate:DemoProtocol? 

如何調用委派?

內的任何類:

delegate.doSomething("Delegate Called") 

之後,你需要實現任何類:

class Demo: DemoProtocol, UIViewController{ 

    //Here you will implement protocol method: 

    func doSomething(str: String){ 
    //Do Something when delegate fires 
    } 
} 
+0

因爲'delegate'可以'nil'它應該是總是用可選鏈接調用'委託?.doSomething(「委託調用」)' – vadian

+0

嗨,我不需要一個協議,我將使用我的委託cls中的任何方法。有什麼辦法嗎? –

+0

當然不是!如何使用委託在任何地方調用其他方法類?更好地使用'NSNotificationCenter' –