奇思妙想 · 2024年 4月 20日 0

ObjC属性assign/retain/copy的区别

23 次浏览

它们代表三种不同的引用方式,如下列出它们的内部逻辑。

self.property = value

  • assign
    property = value
  • retain
    if (property != value) {
    [property release];
    property = [value retain];
    }
  • copy
    if (property != value) {
    [property release];
    property = [value copy];
    }

注意copy属性需要实现NSCopying协议以完成深拷贝。