2012-12-18 36 views
0

對於我目前的項目,我有一些協議,我宣佈在實施這項協議的類類別:類別對實現協議的類有什麼影響?

@interface MyClass (ImplementingMyProtocol) <MyProtocol> 

@end 


@implementation 

// Implementation of protocol 

@end 

我認爲有兩種可能這個方案如何可以解釋:

  1. 的類別僅適用於符合MyProtocolMyClass子類。
  2. 該分類適用於MyClass的所有實例,並按類別實施MyProtocol

這兩種可能性究竟適用於哪一種?我不知道編譯器是如何解釋這個聲明的,我沒有找到任何有關該主題的幫助或文檔。我想我知道如何處理這兩個選項,儘管如此,我需要知道哪一個實際上是編譯器解釋我的代碼的方式。

回答

1

的效果以上將是,它是由公知的xcode的那類MyClass的是否打算實現給定協議MyProtocol 它也將符合它在運行時


的協議是唯一的「元信息」 - 沒有什麼運行時需要..運行時只知道嘿,我有這個類哎我應該怎麼稱呼它這種方法

它不檢查是否符合某些協議


協議只有在那裏類型由IDE檢查(這可以給你警告),你可以在運行時問一類,但objC犯規


所以他們arent執行所需的所有 :D

+0

但是「conformsToProtocol」-Method呢?這不是運行時知道的一些協議相關信息嗎?我可以看到你的觀點,即使用Objective CI可以將任何類型的消息發送給任何對象並希望得到答覆,但我認爲可以在運行時使用協議(使用上述方法)對對象執行一些額外的檢查,無論是是否它可以給我一個錯誤發送一些消息給一個對象... –

+0

是的....「你可以問一個類在運行時,但objC doesnt」 - 運行時無關 –

+0

檢查將是YES給出的例子 –