0

我是目标 c 的新手,我想通过制作一个简单的程序来练习。由于某种原因,方法 print 将无法运行。有任何想法吗?

#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;
     }
}
4

3 回答 3

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
于 2013-10-19T13:20:55.383 回答
1

person *alex; alex = [person alloc];是问题——你从来没有初始化过对象。

person *alex = [[person alloc] init];是完成此操作的常用方法。

person *alex = [person new];是一个很好的捷径(仅当您使用标准init方法时)。

于 2013-10-19T13:16:22.203 回答
0

首先你需要初始化你的对象。

person *alex = [[person alloc] init];
于 2013-10-19T13:16:27.050 回答