所以,我想知道这两段代码之间的区别是什么 - 除了语法差异?这两段代码有什么区别?
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 –
没有有效的区别。如果使用优化编译器进行编译,则两者可能会生成相同的代码。 (一个调试模式的编译器会有所不同,因为命名变量必须被调试器访问,因此可能不会进行寄存器优化。) –