Objective c 使用函数分配给NSString属性时的Objc错误访问

Objective c 使用函数分配给NSString属性时的Objc错误访问,objective-c,nsstring,exc-bad-access,Objective C,Nsstring,Exc Bad Access,我的代码中有一个奇怪的错误,我无法解决它 首先,当我有一个名为tempPassword的属性时,我有这个Singleton类 @private NSString *_tempPassword; } @property (nonatomic, retain) NSString *tempPassword; +(User*)owner; -(void) setTempPassword:(NSString*)string; setTempPassword只接受此字符串并将其分配给tem

我的代码中有一个奇怪的错误,我无法解决它

首先,当我有一个名为tempPassword的属性时,我有这个Singleton类

 @private
NSString *_tempPassword;
 }

 @property (nonatomic, retain) NSString *tempPassword;

 +(User*)owner;
 -(void) setTempPassword:(NSString*)string;

setTempPassword只接受此字符串并将其分配给tempPassword。问题是,无论我在setTempPassword函数中做了什么,我总是获得了错误的访问权限。这是否与它是一个预定义的名称有关,并且在我使用它时不能使用它?把我的头发拉到这里

如果除了设置字符串并(有意的双关语)让路之外,您没有在字符串上做更多的事情,那么就没有必要为它重写setter。您提到您已经@synthesis该属性,因此无论如何重写它都是不必要的。只要打电话:

[[MySingleton owner]setTempPassword:@"Password"];

如果您从代码中删除这些覆盖,那么一切都会正常。

您是否@synthetic tempPassword?yes tempPassword=\u tempPassword是否覆盖单例中的setter或getter?编辑:愚蠢的问题。更好:为什么要在.h中声明重写?没必要是的,我想是的。如果我把它命名为setXxxx,我会覆盖它吗?你好像已经声明了
-(void)settmppassword:(NSString*)string
作为重写,但不需要在.h中声明setter或getter。没必要。扔掉它,然后再跑。