我想知道两者之间实际上有什么区别:
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.deleteButton = deleteButton;
和:
self.deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
当使用 ARC 时?
我看到很多人在第一种情况下写了很多代码,但我相信第二种方式更短,更清晰简洁。
Best Answer-推荐答案 strong>
is there actually any difference between
是的,但是在编译器优化下,生成的二进制文件将是相同的。
UIButton *deleteButton ,即UIButton __strong *deleteButton 拥有该对象的所有权。
对象已在当前自动释放池中注册,因为 buttonWithType: 类方法不以“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
*/
关于ios - 我们在 ARC 中创建对象的这两种方式之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31251139/
|