我花了最后两个小时抨击我的额头对着我的代码,试图找出它的错误。我最终把它缩小到一对线。
NSArray *components = [string componentsSeparatedByString:@" "];
if ([components count] > 1){
retainedProperty1 = [header objectAtIndex:0];
retainedProperty2 = [header objectAtIndex:1];
}
每当我在执行延迟后尝试访问其中任何一个字段时(我正在使用CocoaAsyncSocket,它会在第二次读取套接字时拉入此对象所需的其余数据),他们都会变成僵尸。我只是想知道为什么会发生这种情况?
答案 0 :(得分:5)
retainedProperty1 = ...
,但你实际上是在分配给ivar,而不是财产。除非您使用ARC(并且您不是或者您不会遇到此问题),否则这不会进行任何内存管理。它甚至不会释放这个伊娃的先前价值。你应该说
self.retainedProperty1 = ...
self.retainedProperty2 = ...