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

Guy*_*ood 1 iphone memory-management objective-c

大家好,

如果您不止一次重复以下代码会发生什么?

pointer * mypointer = [[object alloc]init];
Run Code Online (Sandbox Code Playgroud)

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

谢谢,

马丁

Tim*_*Tim 5

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

pointer * mypointer = [[object alloc] init];
mypointer = [[object alloc] init];
Run Code Online (Sandbox Code Playgroud)

你可能会object在内存中创建两个实例,每个实例都处于自己的位置,并且你将丢失第一个mypointer实例(现在包含对第二个实例的引用object).实际上,这是一个泄漏.