Objective-C NSString自动释放问题

Cha*_*112 1 cocoa objective-c

我只花了最后两个小时抨击我的额头对着我的代码,试图弄清楚它有什么问题.我最终把它缩小到一对线.

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

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

    retainedProperty2 = [header objectAtIndex:1];
}
Run Code Online (Sandbox Code Playgroud)

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

Lil*_*ard 5

你骗自己了.你说的是retainedProperty1 = ...,你实际上是在分配给伊娃,而不是财产.除非您使用ARC(并且您不是或者您不会遇到此问题),否则这不会进行任何内存管理.它甚至不会释放这个伊娃的先前价值.你应该说

self.retainedProperty1 = ...
self.retainedProperty2 = ...
Run Code Online (Sandbox Code Playgroud)