Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone EXC_访问字符串时访问错误_Iphone_Objective C_Exc Bad Access - Fatal编程技术网

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];