使用“设置”一词错误

时间:2016-04-12 04:07:16

标签: objective-c

在我的.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没有?谢谢

1 个答案:

答案 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;