我定义了@property(nonatomic,retain)NSString *usrId;
然后赋予这样的值:
usrId=[Screen.Info valueForKey:@"id"];
然后在dealloc
我发布字符串usrId
。这段代码位于viewController
,我正在推送navController
,然后我将其弹出。但是下次我再次推送viewController
时,EXC_BAD_ACESS
会在上述声明中发生。
答案 0 :(得分:2)
从不释放对象。当你写:
NSString *usrId = [Screen.Info valueForKey:@"id"];
你只是给它一个参考,既不分配也不保留它。所以你可以使用以下之一,然后在dealloc中释放,或者你根本不应该释放它。
NSString *usrId = [[NSString alloc] initWithString:[Screen.Info valueForKey:@"id"]];
NSString *usrId =[[Screen.Info valueForKey:@"id"] retain];
答案 1 :(得分:1)
使用usrId
直接使用iVar而不是属性,因此未正确使用它。您需要使用dot syntax,因此请将其更改为self.usrId = [Screen.Info valueForKey:@"id"];
以使用该属性。
答案 2 :(得分:1)
尝试将您的值指定为
self.usrId = [Screen.Info valueForKey:@"id"];
或
usrId = [[Screen.Info valueForKey:@"id"] retain];
通过执行此操作,您只需将usrId
的值分配给[Screen.Info valueForKey:@"id"]
,这样当您在dealloc中释放它时,您也会释放[Screen.Info valueForKey:@"id"]
中存储的内容。如果这对您有用,请告诉我。