alloc,copy和new有什么区别?

| alloc,copy和new之间的实际区别是什么,以及assign和nonatomic属性又是什么。     
已邀请:
         分配 alloc是一个Class选择器(例如,被称为like)
[NSObject alloc]
它返回NSObject *类型的未初始化指针。 在里面 要完成初始化,必须在实例本身上调用正确的指定初始化器:
[[NSObject alloc] init]
将返回可用的NSObject *指针。 新 新的基本上执行alloc-> init,除了直接在类级别调用:
NSObject* aObj = [NSObject new]
NSObject* aObj = [[NSObject alloc] init]
是相似的。 非原子 非原子属性意味着在写入属性时(例如在set调用期间),将不会在此属性合成的变量上添加任何锁(这意味着不会浪费过多的@synchronize)。 因此,如果您的属性不会同时被不同的线程更改,则可以安全地将其设置为非原子。 复制 复制属性意味着在修改该属性时,例如:
aObj.copyProperty = otherValue
copyProperty变量会将copyWithZone:信号发送到otherValue对象。 换句话说,如果您的copyProperty符合NSCopying协议,则它最终将具有与otherValue相同的属性,但是将拥有自己的地址并保留计数,因此与otherValue一样位于内存的完全不同的部分。 基本上,copyProperty将占用与otherValue一样多的内存空间。 分配 分配属性意味着您执行以下操作:
aObj.prop = aProperty
由属性prop合成的变量将直接分配给aProperty,这意味着它们将共享完全相同的地址并保留计数。 使用分配时,不会占用额外的内存空间。 我希望这可以帮助你。有关更多信息,请阅读Apple内存管理文档。     

要回复问题请先登录注册