2010-07-25 43 views
0

我想這樣的事情:爲什麼[obj selectorNotDefined]不會引發警告?

[myObject selectorNotDefined]; 

會產生警告。有沒有可以做到這一點的選擇?

更具體地講,當我將此代碼添加到我現有的項目:

NSObject *myObject = [[NSObject alloc] init]; 
[myObject selectorNotDefined]; 

編譯器不會調用任何警告。

如果我創建一個新項目並添加這些行,它會調用一個警告。

我現有的項目出了什麼問題?

+1

請更具體與你想要的。你是否希望能夠將一個未定義的消息傳遞給一個對象並讓它實際上對它做一些有意義的事情?你只是想擺脫警告?什麼? – jer 2010-07-25 17:04:03

+0

請編輯您的問題,而不是發佈澄清作爲答案(他們不是)。這不是一個論壇;這個想法是最好的答案,讓氣泡達到最高點,這會導致對話全部失靈。 – 2010-07-27 21:42:28

回答

0

這取決於你分配了什麼類型myObject。如果它是一個id類型,則不會得到任何警告,但是如果將其設置爲特定的對象類型,編譯器將檢查頭文件中聲明的方法。

+0

差不多;您仍然會收到未聲明的方法的警告。編譯器必須看到一個方法聲明能夠找出如何編碼參數和返回值。 – bbum 2010-07-25 17:32:03

1

如果你寫:

NSObject *myObject = [[NSObject alloc] init]; 
[myObject selectorNotDefined]; 

你一定會得到一個警告:要選擇selectorNotDefined

或者你可以檢查myObject的可能會沒有響應: 我

f([myObject respondsTo:selector(selectorNotDefined)]{ 
[myObject selectorNotDefined]; //or 
[myObject performSelector:(selectorNotDefined) withObject:nil afterDelay:0]; 

} 
相關問題