2013-05-22 113 views
0

我想實現一個UIViewController的類別,我想確保該對象符合某個協議。類似這樣的:類別符合協議

#import <UIKit/UIKit.h> 

@interface UIViewController<MyProtocol> (Category) 

@end 

這可能嗎?

+0

我相信你問類似這樣的東西:http://stackoverflow.com/questions/17739562/creating-a-category-for-classes-that-執行一個協議在目標c – Senseful

+0

斯威夫特的協議擴展是我在想什麼。協議擴展將行爲添加到符合協議的類型中,並通過擴展來滿足協議的期望。 –

+0

Mods:標記爲重複的[two](http://stackoverflow.com/questions/5824755)[questions](http://stackoverflow.com/questions/7255392)與@Brian所要求的完全不同;他問的是擴展協議。 ** [擴展一個類以符合協議](http://stackoverflow.com/questions/5824755)**(在Obj-C和Swift 1中可用)與** [擴展a協議](http://stackoverflow.com/questions/17739562)**(僅適用於Swift 2)。 – Senseful

回答

1

交換類別和協議:

@interface UIViewController (Category) <MyProtocol> 
+0

我不希望類別實現協議。我想確保類別的基類。我通過將自己轉換爲臨時指針並在那裏聲明它是協議來解決這個問題。 id castedSelf =(id )self; –

+0

鑄造沒有把握。一個類別知道它的基類。這不是一個混合。所以基類可以簡單地實現協議,聲明在一個接口上,類別可以知道它。 –

+0

在將消息發送到在ARC下實現協議的基類的屬性/方法時,強制轉換是必需的。如果我的基類是NSObject並且實現了一個協議,那麼省略一個協議聲明會讓我得到一個最無用的基類。是的,鑄造沒有把握。那是我原本希望解決的問題。 –