我是目标c的新手,我想通过制作一个简单的程序来练习。由于某种原因,方法打印将无法运行。有任何想法吗?
#import <Foundation/Foundation.h>
@interface person: NSObject
{
//----Variables----
int age;
}
//----Methods----
-(void) print;
-(void)setAge: (int) a;
@end
@implementation person
-(void) print{
NSLog(@"You are %i years old!", age);
}
-(void) setAge: (int) a{
age=a;
}
@end
int main(int argc, char *argv[]){
@autoreleasepool{
person *alex; alex = [person alloc];
[alex setAge:12];
[alex print];
return 0;
}
}
答案 0 :(得分:2)
类名应按约定以大写字母开头,因此在任何地方都应为Person
而不是person
。
您通过[person alloc]
分配了对象的实例(同样应该是[Person alloc]
),但您尚未初始化它。您需要调用初始值设定项,如[[Person alloc] init]
中所示。 (在这种特殊情况下,它不是严格必要但是总是仍然这样做。)
除此之外,该计划也有效。我在调试控制台中得到了这个:
2013-10-19 15:20:10.757 Test[13551:303] You are 12 years old!
Program ended with exit code: 0
答案 1 :(得分:1)
person *alex; alex = [person alloc];
是问题 - 您从未初始化对象。
person *alex = [[person alloc] init];
是完成此操作的常用方法。
person *alex = [person new];
是一个很好的快捷方式(当您仅使用标准init
方法时)。
答案 2 :(得分:0)
首先你需要初始化你的对象。
person *alex = [[person alloc] init];