2012-01-08 32 views
2

這兩者有什麼區別?調用方法作爲屬性目標-C

[SomeClass.classMethod instanceMethod]; 
[[SomeClass classMethod] instanceMethod]; 

SomeClassclassMethod返回一個單獨的對象,在其上instanceMethod被調用。這兩種方法都可以工作,並且Xcode在執行或代碼時不會抱怨。但是,輸入SomeClass.classMethod不會在下拉列表中顯示任何匹配,而[SomeClass classMethod]會顯示。這只是一個缺失的功能,或者是爲了防止這種做法的蓄意企圖?

回答

3

點語法(SomeClass.classMethod)僅僅是發送消息的語法糖([SomeClass classMethod])。他們做同樣的事情。

你看不到屬性補全(點語法),可能是因爲您要訪問的屬性的對象,沒有正確澆鑄成類型具有屬性:

[UIApplication sharedApplication].delegate.myproperty // <-- No completion 
[[UIApplication sharedApplication].delegate myproperty] // <-- Completion 

這是因爲delegateid,因此沒有屬性(它是泛型類型的對象),所以自動完成不能提示任何東西。後者將消息發送給泛型類型的對象,因此編譯器可以建議你發送大量消息(不管該對象是否支持它們)。

+0

謝謝,這可能是爲什麼。必須記住,不要經常依賴自動填充,有時我必須建立它才能踢入,或者鍵入屏幕的不同部分。 – 2012-01-08 11:31:49