iphone - 未声明的标识符 Objective C

标签 iphone objective-c ios xcode ios4

我似乎无法绕过这个错误;使用未声明的标识符“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/

相关文章:

ios - 如何从 UIView 内部执行 segue

ios - 如何通过使用 Ionic1 在 iPhone/iPad 上点击下一个键转到下一个输入?

iphone - 使用 REST api 后端开发 iOS 应用程序(基于数据库)

iphone - iPhone OS 应用程序的可用内存

objective-c - respondsToSelector 外观代理失败

ios - "No rows found"当没有 UICollectionView 和 UITableView 的行/单元格时

ios - 当我收到消息 iPhone 应用程序时自动将 OTP 填充到 TextField

javascript - 能否避免iPhone 6网页 react 延迟(近1秒)?

iphone - 以编程方式在 UIView 上添加 UITextField

iPhone 地址簿自定义属性