所以,我想知道這兩段代碼之間的區別是什麼 - 除了語法差異?這兩段代碼有什麼區別?
BBDataStore* tempDataStore = [[BBDataStore alloc] initWithDataExpiry:DATA_EXPIRY_TIME];
self.dataStore = tempDataStore;
和
self.dataStore = [[BBDataStore alloc] initWithDataExpiry:DATA_EXPIRY_TIME];
Self.dataStore
是BBDataStore
一個屬性。
從我所看到的 - 這裏沒有區別。
在第一個示例中 - 我們最終將tempDataStore
分配到self.dataStore
- 這是BBDatastore
的一個實例。
在第二個例子 - 我們有效地做同樣的事情...不是這樣嗎?
我認爲兩條線都沒有不同。 –
在第一種情況下,第一行創建對象,tempDataStore引用它,當第二行執行時,self.dataStore也指向同一個對象。因此引用計數會增加。當tempDataStore作用域將結束時,將只有一個對象引用,它將是self.dataStore。在第二種情況下,只有一個指向對象的指針,那就是self.datastore –
沒有有效的區別。如果使用優化編譯器進行編譯,則兩者可能會生成相同的代碼。 (一個調試模式的編譯器會有所不同,因爲命名變量必須被調試器訪問,因此可能不會進行寄存器優化。) –