我似乎无法绕过这个错误;使用未声明的标识符“ageBy”。 我不明白为什么要得到它,因为我的代码中有 import Person.h。 感谢您的宝贵时间和任何帮助。
人.h
@interface Person : NSObject
{
int _age;
int _years;
NSString *_name;
NSString *_job;
}
-(void)setAge:(int)age;
-(int)age;
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setJob:(NSString *)job;
-(NSString *)job;
-(NSString *)summaryString;
-(void)ageBy:(int)years;
@end
人.m
#import "Person.h"
@implementation Person
-(void)setAge:(int)age{
_age = age;
}
-(int)age{
return _age;
}
-(void)setName:(NSString *)name{
_name = name;
}
-(NSString *)name{
return _name; }
-(void)setJob:(NSString *)job{
_job = job;
}
-(NSString *)job{
return _job;
}
-(NSString *)summaryString{
return [NSString stringWithFormat:@"The Person %@ is %d years old and is a %@",_name,_age,_job];
-(void)ageBy:(int)years{
_years = years;
_age = years + _age;
}
}
@end
最佳答案
您的 ageBy:
是在 summaryString
中定义的。您可能希望将大括号移动到 @end
之前,使其位于 -(void)ageBy:(int)years
之上。所以:
-(NSString *)summaryString{
return [NSString stringWithFormat:@"The Person %@ is %d years old and is a %@",_name,_age,_job];
}
-(void)ageBy:(int)years{
_years = years;
_age = years + _age;
}
另外作为样式说明,如果 summaryString
仅用于调试,那么您最好将其声明为 description
.后者是获取 Objective-C 对象的依赖于实现和字符串描述的标准形式,其最终效果是像 NSArray
这样的集合对象知道在所有对象上调用 description
他们的子对象,以便创建正确的输出。
关于iphone - 未声明的标识符 Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554839/