Objective c方法不打印

时间:2013-10-19 13:14:00

标签: ios objective-c

我是目标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;
     }
}

3 个答案:

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