2011-12-04 85 views
0

使用objective-c時,我有點困惑。這部分特別讓我感到困惑。Objective C方法和語法

的目的是什麼和/或類似這樣的寫入代碼之間的區別...

object = [object method]; 

[object method]; 

學習Objective-C到現在爲止,我一直認爲我能做到像這樣的東西..

說我已經創建了這個..

NSString *object = [[NSString alloc]initWithFormat:@"%@"]; 

然後,我可以做我想做的與像這樣..

[object applyAnyMethodHere]; 

但現在我看到這樣的事情..

object = [object applyAnyMethodHere]; 

的是這兩者之間的區別?

+2

歡迎來到StackOverflow!爲什麼不選擇用戶名,閱讀[常見問題](http://stackoverflow.com/faq),並保持一段時間? – Moshe

回答

3

第一個(object = [object method];)是任何方法返回的分配。

第二個([object method];)只是調用方法而不關注它的返回值(如果有的話)。

第三個(NSString *object = [[NSString alloc]initWithFormat:@"@"])聲明變量並分配在alloc類方法的返回值上調用的initWithFormat方法的返回值。

+0

謝謝你Michael。我想我唯一的問題是, 「NSString * object = [object method];」之間的區別是什麼? and 「NSString * object; object = [object method];」 如果有? – Heartbound07

+0

至少在大多數情況下沒有可讀性。 –

+0

非常感謝。 – Heartbound07

0

在許多編程語言中,object = [object method];就是所謂的「賦值」語句。試想一下:

x = y + z; 

該聲明由右計算機讀取到左是指:

計算變量y和z的總和,然後將其存儲在變量名爲x。

表達式右側的內容與整個語句中實際發生的內容無關。在您的示例中,計算機將:

告訴名爲「object」的對象執行「method」並將結果存回「object」。

但是,您並不總是希望存儲方法調用的結果。例如,如果您想要顯示警報視圖,則可以簡單地撥打:

[myalertView show]; 

請注意,沒有分配發生。除非要存儲方法調用返回的值,否則不需要賦值。

此外,考慮一下:

NSInteger x = 5; 

沒有方法調用,但有一個分配。你的object = [object method];的例子只是一個更復雜的版本。