重复alloc到同一指针 - 会发生什么?

时间:2010-10-11 15:20:49

标签: iphone objective-c memory-management

全部,

如果您多次重复以下代码会怎样?

pointer * mypointer = [[object alloc]init];

您是否只是将该对象的保留计数再次增加一个?

谢谢,

马丁

1 个答案:

答案 0 :(得分:5)

您不会增加保留计数 - 只有retain消息会对分配的对象执行此操作。由于您要复制pointer * mypointer类型声明,因此多次运行该确切代码实际上会出错。但是,如果你有(例如):

pointer * mypointer = [[object alloc] init];
mypointer = [[object alloc] init];

你会创建两个object个实例,每个实例都在内存中的位置,你会丢失第一个实例(因为mypointer现在包含对第二个实例的引用object)。实际上,这是一次泄密。