在我的.h文件中,我声明了这些方法:
-(void) setName: (NSString *) theName;
-(void) setEmail: (NSString *) theEmail;
-(void) vsetAge: (NSString *) theAge;
-(void) vsetGender: (NSString *) theGender;
-(void) setName: (NSString *) theName andEmail: (NSString *) theEmail;
-(void) setAge: (NSString *) theAge andGender: (NSString *) theGender;
@property (copy, nonatomic) NSString *name, *email, *age, *gender;
和.m
-(void) setName: (NSString *) theName {
if (name != theName) {
name = [NSString stringWithString:theName];
}
}
-(void) setEmail: (NSString *) theEmail {
if (email != theEmail) {
email = [NSString stringWithString:theEmail];
}
}
-(void) vsetAge: (NSString *) theAge {
self.age = theAge;
}
-(void) vsetGender: (NSString *) theGender {
self.gender = theGender;
}
我没有添加此问题中的其他方法
我的问题是,使用setName,setEmail非常有效。但是一旦我创建了2个新方法,Age和Gender,每当我使用单词set时我都会收到错误,因此我只是添加了一个随机字母'v'infont它就可以了。任何解释为什么setName / setEmail工作,但setAge没有?谢谢
答案 0 :(得分:0)
您发布的大部分代码都是不必要的。不要明确声明" setter" .h文件中属性的方法。
你明确的" setter" .m文件中的方法实现也是不必要的。
你的.h可以是:
-(void) setName: (NSString *) theName andEmail: (NSString *) theEmail;
-(void) setAge: (NSString *) theAge andGender: (NSString *) theGender;
@property (copy, nonatomic) NSString *name, *email, *age, *gender;
在.m中,摆脱所有这四种方法。
如果您在.m中使用过任何@synthesize
语句,也可以删除它们。
另一方面,在这种情况下使用stringWithString:
毫无意义。而不是像:
name = [NSString stringWithString:theName];
只是这样做:
name = theName;