在Objective-C中,哪種編碼更好?id myObj <MyProtocol> vs if([obj class] conformsToProtocol:@protocol(MyProtocol))
//版本#1
id obj<MyProtocol>;
[obj myMessage];
//版本#2
id obj;
if([[obj class] conformsToProtocol:@protocol(MyProtocol)])
[obj myMessage];
出於某種原因,我看到一個版本的示例代碼,但對我來說第2版似乎更安全。 如果在運行時從一個不符合協議MyProtocol的通用標識中分配obj,會發生什麼情況?
對選擇器的響應也可以是開發的一個很好的補充。你創建了一個存根對象,並且在對選擇器的響應錯誤的情況下有一些消息指出它是一個存根。這樣,當你運行你的代碼時,你會得到一個完整的東西列表。 – Bergasms 2013-03-11 23:32:44