Ios 目标c方法不打印

Ios 目标c方法不打印,ios,objective-c,Ios,Objective C,我对目标c还不熟悉,我想通过制作一个简单的程序来练习。由于某些原因,打印方法将无法运行。有什么想法吗 #import <Foundation/Foundation.h> @interface person: NSObject { //----Variables---- int age; } //----Methods---- -(void) print; -(void)setAge: (int) a; @end @implement

我对目标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;
     }
}
#导入
@接口人:NSObject
{
//----变数----
智力年龄;
}
//----方法----
-(作废)打印;
-(无效)设置:(int)a;
@结束
@执行人
-(作废)打印{
NSLog(@“您已%i岁!”,年龄);
}
-(无效)设置:(int)a{
年龄=a;
}
@结束
int main(int argc,char*argv[]){
@自动释放池{
person*alex;alex=[person alloc];
[alex setAge:12];
[alex print];
返回0;
}
}

个人*alex;alex=[个人分配]是问题所在--您从未初始化过对象

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


person*alex=[person new]
是一个很好的快捷方式(仅当您使用标准的
init
方法时);alex=[个人分配]是问题所在--您从未初始化过对象

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


person*alex=[person new]
是一个很好的快捷方式(仅当您使用标准的
init
方法时);alex=[个人分配]是问题所在--您从未初始化过对象

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


person*alex=[person new]
是一个很好的快捷方式(仅当您使用标准的
init
方法时);alex=[个人分配]是问题所在--您从未初始化过对象

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


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

首先,您需要初始化对象

person *alex = [[person alloc] init];

首先,您需要初始化对象

person *alex = [[person alloc] init];

首先,您需要初始化对象

person *alex = [[person alloc] init];

首先,您需要初始化对象

person *alex = [[person alloc] init];
  • 按照惯例,类名应该以大写字母开头,因此它应该是
    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
  • 按照惯例,类名应该以大写字母开头,因此它应该是
    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
  • 按照惯例,类名应该以大写字母开头,因此它应该是
    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
  • 按照惯例,类名应该以大写字母开头,因此它应该是
    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

lldb是调试器。如果你按下“播放”按钮直到它终止,你应该会得到一个堆栈跟踪。播放按钮在哪里?它在底部面板中。。然而,我复制粘贴了你的代码,没有“init fix”,它实际上是开箱即用的怪异吗?@user2404543我同意没有
init
它是怪异的——在你的简单对象中它是有效的,因为显然不需要初始化,但您不应该依赖它工作,因为在更高级的类上,它将绕过类所需的初始化,使事情真正无法工作。lldb是调试器。如果你按下“播放”按钮直到它终止,你应该会得到一个堆栈跟踪。播放按钮在哪里?它在底部面板中。。然而,我复制粘贴了你的代码,没有“init fix”,它实际上是开箱即用的怪异吗?@user2404543我同意没有
init
它是怪异的——在你的简单对象中它是有效的,因为显然不需要初始化,但您不应该依赖它工作,因为在更高级的类上,它将绕过类所需的初始化,使事情真正无法工作。lldb是调试器。如果你按下“播放”按钮直到它终止,你应该会得到一个堆栈跟踪。播放按钮在哪里?它在底部面板中。。然而,我复制粘贴了你的代码,没有“init fix”,它实际上是开箱即用的怪异吗?@user2404543我同意没有
init
它是怪异的——在你的简单对象中,它可以工作,因为显然不需要初始化,但是你