第一篇文章。试图学习目标C.我有很好的OOP知识。我有一点C,C ++和Java背景但生锈了。不幸的是,我很难围绕一些Objective C概念和语法。
我正在尝试使用compileonline中的一些代码,经过一些注释后我得到了我的代码,但注意到我的方法声明仍然被注释掉了。请参阅 initWithName
#import <Foundation/Foundation.h>
@interface cl_person: NSObject
{
NSString* name;
int age;
}
//-(id)init;
//-(id)initWithName: (NSString*)p_name withAge: (int)p_age;
-(void)display;
@end
@implementation cl_person
/*
-(id)init{
return self;
}*/
-(id)initWithName: (NSString*)p_name{
//self = [self init];
name = p_name;
return self;
}
-(id)initWithName: (NSString*)p_name withAge: (int)p_age{
self = [self initWithName: p_name];
age = p_age;
return self;
}
-(void)display{
printf("My name is %s and I am %d years old.", [name UTF8String], age);
}
@end
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
cl_person *o_person = [[cl_person alloc] initWithName: @"Dick" withAge: 25];
[o_person display];
[o_person release];
//NSLog (@"hello world");
[pool drain];
return 0;
}
道歉,如果其他地方已经涵盖了这一点。我做了一个快速搜索,浏览了一些可能相关的点击但没有帮助。谢谢!
[NSTotalNoob发布];
答案 0 :(得分:0)
不,该方法特定于此课程。
我不确定你用“使用选择器withAge实现一个方法”是什么意思。该方法的名称是initWithName:withAge:。所有这些都是一个名字的一部分。 Objective-C中没有要求声明您的方法。如果您希望从课外看到它们,则应在.h文件中声明它们。我见过有人说你仍然可以从课外调用它们,但是你会得到编译器警告 - 但是,在ASC下使用你在Xcode中获得的默认设置,你不能这样做,你会得到一个错误,而不仅仅是编译器的警告。
由于你是一个完全的菜鸟,通过你自己的帐户,我应该提一些其他的东西。通常,在OS X和iOS中,除了模板在main.m文件中提供的代码之外,我们不会添加任何代码。类名应以大写字母开头,方法,ivars和属性应以小写字母开头。我们还使用camel case来命名而不是下划线,所以你的类最好用ClPerson编写,实例用oPerson编写。