alloc,copy和new之间的实际区别是什么,分配和非原子属性又有什么不同。alloc,copy和new有什么区别?
4
A
回答
5
- 的alloc
的alloc是一类选择器(即用于为例称为等)
[NSObject alloc]
它返回一个非初始化指针NSObject的类型*的。
- 初始化
完成初始化,您必须调用实例自身的固有指定初始化:
[[NSObject alloc] init]
会返回一个可用的NSObject *指针。
- 新
新基本上没有一个页头 - >初始化除了它是直接在类级别称为:
NSObject* aObj = [NSObject new]
NSObject* aObj = [[NSObject alloc] init]
是相似的。
- 非原子
甲非原子属性意味着,当该属性将(一组呼叫期间前)被写入无锁将被添加在由此属性合成的变量(即装置没有矫枉过正的时间@synchronize)。
所以如果你的财产不会被不同的线程同时改变,你可以安全地将它设置为非原子。
- 副本
副本属性意味着,当你修改特性ex:
aObj.copyProperty = otherValue
的copyProperty变量将发送copyWithZone:信号到otherValue目的。
换句话说,如果你的copyProperty符合该NSCopying协议最终会具有相同的属性otherValue,但将有它自己的地址,并保留计数,因此被定位在一个完全不同的部分的内存为otherValue是。
基本上copyProperty将占用的内存空间作为otherValue。
- 分配
分配的属性意味着,当你这样做:
aObj.prop = aProperty
酒店所合成的变量道具将直接被分配到aProperty这意味着他们将分享确切的相同的地址和保留计数。
当您使用assign时,没有额外的内存空间被占用。
我希望这可以帮助你。欲了解更多信息,请阅读Apple Memory Management Documentation
相关问题
- 1. alloc,retain和copy之间的区别是什么
- 2. alloc和allocWithZone有什么区别:?
- 3. new XMLHttpRequest()vs new XMLHttpRequest - 有什么区别?
- 4. String和new String有什么区别?
- 5. new-itemproperty和set-itemproperty有什么区别?
- 6. `f()`和`new f()`有什么区别?
- 7. “new A()”和“A.newInstance()”有什么区别?
- 8. `String.class`和`new Class [] {String.class}`有什么区别?
- 9. 在vb.net中声明为new和as something = new有什么区别?
- 10. C/C++中`new`和`new()`结构有什么区别?
- 11. 在C++中重载operator new和operator new []有什么区别?
- 12. [[NSMutableArray alloc] init]和[@ [] mutableCopy]之间有什么区别?
- 13. [[alloc] init]和[[thing] retain]之间有什么区别?
- 14. 创建分支的svn copy和svn merge有什么区别?
- 15. XSLT:<copy-of>和<apply-templates>有什么区别?
- 16. 新的int和new(int)之间的C++有什么区别?
- 17. XWPFTable table = doc.createTable和new XWPFTable(CTTbl,IBody)有什么区别?
- 18. Android中的'new Fragment()'和'Fragment.getInstance()'有什么区别?
- 19. 'Car myCar = new Car();''有什么区别和'汽车myCar'?'?
- 20. Perl中的新Some :: Class和Some :: Class-> new()有什么区别?
- 21. 在JavaScript中Array(1)和new Array(1)有什么区别?
- 22. RXJS,Observable.create和new Observable之间有什么区别?
- 23. ** copy **和** addAll **之间是否有区别?
- 24. 有什么区别`和$(Bash中有什么区别?
- 25. ==和===有什么区别?
- 26. ==和===有什么区别?
- 27. 有什么区别? :和||
- 28. ==和===有什么区别?
- 29. '=='和'==='有什么区别?
- 30. `&`和`ref`有什么区别?