1

在过去的两个小时里,我只是用我的前额猛撞我的代码,试图找出它有什么问题。我最终将其缩小到一对线。

NSArray *components = [string componentsSeparatedByString:@" "];

if ([components count] > 1){                        
    retainedProperty1 = [header objectAtIndex:0];

    retainedProperty2 = [header objectAtIndex:1];
}

每当我在执行延迟后尝试访问这些字段中的任何一个(我正在使用CocoaAsyncSocket,它会在第二次从套接字读取时拉入我需要的该对象的其余数据),它们都会变成僵尸。我只是想知道为什么会发生这种情况?

4

1 回答 1

5

你在对自己撒谎。您是在说retainedProperty1 = ...,但您实际上是在分配给 ivar,而不是属性。除非你使用 ARC(你没有使用或者你不会有这个问题),否则这不会做任何内存管理。它甚至不会释放此 ivar 的先前值。你应该说

self.retainedProperty1 = ...
self.retainedProperty2 = ...
于 2012-07-18T00:09:30.557 回答