代码之家  ›  专栏  ›  技术社区  ›  TheAmateurProgrammer

分配、保留和复制有什么区别

  •  4
  • TheAmateurProgrammer  · 技术社区  · 15 年前

    2 回复  |  直到 14 年前
        1
  •  22
  •   taskinoor    15 年前

    请通过 this 关于内存管理的长期教程。它可能需要一些时间来阅读全文,但它很好地解释了基本的事情。

    编辑:关于复制- 使用retain时,只需增加对象的retain计数。但是,当使用copy时,将创建对象的单独副本(浅副本)。分离意味着它是一个保留计数为1的不同对象。

    例如,

    NSObject *obj1 = [[NSObject alloc] init];   // obj1 has retain count 1
    
    // obj1 and obj2 both refer same object. now retain count = 2
    // any change via obj1 will be seen by obj2 and vice versa, as they point same object
    NSObject *obj2 = [obj1 retain];   
    
    // obj3 is a separate copy of the object. its retain count is 1 just like newly allocated object
    // change via obj3 will not affect obj1 or obj2 and vice versa as they are separate objects
    NSObject *obj3 = [obj1 copy];
    
    
        2
  •  4
  •   William Remacle    15 年前

    分配 :需要进行内存分配时(要创建对象,需要为其分配内存空间)

    每个对象都有一个retain计数,该计数指示在该对象中具有所有权权益的对象的数量。它是自动完成的 复制 保持 关键字。

    释放内存 方法将被调用并释放在该对象中进行的所有分配。

    如果您需要更多信息: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html