我们在 ARC 中创建对象的这两种方式有什么区别吗?
Is there any difference between these 2 ways we create objects in ARC?
我想知道:
之间实际上有什么区别吗?
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.deleteButton = deleteButton;
和:
self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
使用 ARC 时?
我看到很多人像第一种情况一样写了很多代码,但我相信第二种方式更短,更清晰和简洁。
不是 ARC 专家也不是这里的任何人,但我相信代码是相同的。当您分配给指针时,您正在分配指针指向的内存地址。你在顶部和底部的唯一一件事是在将内存地址分配给 self.deleteButton.
之前将其保存在本地指针中
is there actually any difference between
是的,但是,在编译器优化下,生成的二进制文件将是相同的。
UIButton *deleteButton
,即UIButton __strong *deleteButton
拥有对象的所有权。
对象已在当前自动释放池中注册,因为 buttonWithType:
class 方法不是以 "alloc"、"new"、"copy" 或 "mutableCopy".
因此,
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
/*
* The current Autorelease Pool has ownership of the object. retainCount=1
* __strong deleteButton has ownership of the object as well. retainCount=2
*/
self.deleteButton = deleteButton;
/*
* If self.deleteButton is strong property, it has ownership of the object too. retainCount=3
* If self.deleteButton is weak property, it doesn't have ownership of the object. retainCount=2
*/
我想知道:
之间实际上有什么区别吗?UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.deleteButton = deleteButton;
和:
self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
使用 ARC 时?
我看到很多人像第一种情况一样写了很多代码,但我相信第二种方式更短,更清晰和简洁。
不是 ARC 专家也不是这里的任何人,但我相信代码是相同的。当您分配给指针时,您正在分配指针指向的内存地址。你在顶部和底部的唯一一件事是在将内存地址分配给 self.deleteButton.
之前将其保存在本地指针中is there actually any difference between
是的,但是,在编译器优化下,生成的二进制文件将是相同的。
UIButton *deleteButton
,即UIButton __strong *deleteButton
拥有对象的所有权。
对象已在当前自动释放池中注册,因为 buttonWithType:
class 方法不是以 "alloc"、"new"、"copy" 或 "mutableCopy".
因此,
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
/*
* The current Autorelease Pool has ownership of the object. retainCount=1
* __strong deleteButton has ownership of the object as well. retainCount=2
*/
self.deleteButton = deleteButton;
/*
* If self.deleteButton is strong property, it has ownership of the object too. retainCount=3
* If self.deleteButton is weak property, it doesn't have ownership of the object. retainCount=2
*/