Iphone EXC_访问字符串时访问错误
我已经定义了Iphone EXC_访问字符串时访问错误,iphone,objective-c,exc-bad-access,Iphone,Objective C,Exc Bad Access,我已经定义了@property(非原子,保留)NSString*usrId 然后指定如下值: usrId=[Screen.Info valueForKey:@"id"]; 然后在dealloc中,我释放字符串usrId。此代码位于我正在推送到navController的viewController中,然后我弹出它。但是下一次我再次推这个viewController,在上面的语句中发生了一个EXC\u BAD\u ACESS。使用usrId直接使用iVar,而不是属性,因此它没有被正确保留。您需
@property(非原子,保留)NSString*usrId代码>
然后指定如下值:
usrId=[Screen.Info valueForKey:@"id"];
然后在dealloc
中,我释放字符串usrId
。此代码位于我正在推送到navController
的viewController
中,然后我弹出它。但是下一次我再次推这个viewController
,在上面的语句中发生了一个EXC\u BAD\u ACESS
。使用usrId
直接使用iVar,而不是属性,因此它没有被正确保留。您需要使用,因此将其更改为self.usrId=[Screen.Info valueForKey:@“id”]
使用属性。使用usrId
直接使用iVar而不是属性,因此无法正确保留它。您需要使用,因此将其更改为self.usrId=[Screen.Info valueForKey:@“id”]
使用该属性。尝试将值指定为
self.usrId = [Screen.Info valueForKey:@"id"];
或
通过按原样操作,您只需将usrId
的值分配给[Screen.Info valueForKey:@“id”]
,因此当您在dealloc中释放它时,您也会释放[Screen.Info valueForKey:@“id”]
中存储的任何内容。让我知道这是否适合您。尝试将您的值指定为
self.usrId = [Screen.Info valueForKey:@"id"];
或
通过按原样操作,您只需将usrId
的值分配给[Screen.Info valueForKey:@“id”]
,因此当您在dealloc中释放它时,您也会释放[Screen.Info valueForKey:@“id”]
中存储的任何内容。让我知道这是否适用于您。如果您没有分配或保留对象,请不要释放它。当你写作时:
NSString *usrId = [Screen.Info valueForKey:@"id"];
您只是引用它,既不分配也不保留它。因此,您可以使用以下方法之一,然后在dealloc中释放,或者根本不应该释放它
NSString *usrId = [[NSString alloc] initWithString:[Screen.Info valueForKey:@"id"]];
NSString *usrId =[[Screen.Info valueForKey:@"id"] retain];
如果未分配或保留对象,则从不释放该对象。当你写作时:
NSString *usrId = [Screen.Info valueForKey:@"id"];
您只是引用它,既不分配也不保留它。因此,您可以使用以下方法之一,然后在dealloc中释放,或者根本不应该释放它
NSString *usrId = [[NSString alloc] initWithString:[Screen.Info valueForKey:@"id"]];
NSString *usrId =[[Screen.Info valueForKey:@"id"] retain];