既学习笔记一 helloworld项目,
在当前项目所在的xcode中,按 command+N ,出现一个创建类的向导:如图
创建一个oc 类, 选择其父类为NSObject ,命名为Student ;
系统会自动生成相应的 。h和。m文件
这里我说下关于要继承 NSObject的 个人见解,
在java中创建一个类,可以不继承任何类,因为系统会在该类的内部自动添加一个无参的构造方法,那么构建该类的对象时,可以调用该 无参构造方法来初始化一个该类的对象
但是再oc中,应该不存在这一机制,所以需要继承一个父类来调用父类的方法来构造一个对象。 如下代码:
Student *student=[[Studentalloc] init];
alloc应该是 Student类的父类的方法, 调用该方法 后,Returns a new instance of the receiving class. (alloc
方法的api说明) 但是此时并没有完成初始化一个对象的过程,
还要执行init 方法来完成该对象的初始化过程,官方 api 说明为:You must use an init...
method to complete
the initialization process (翻译:你必须使用 init... 这样的方法来完成初始化过程)
接着上面的说:
创建一个 新类之后,在该类的。h文件中写上想要的属性,及其类方法。
代码如下;
Student。h文件
#import <Foundation/Foundation.h>
@interface Student : NSObject
{
int age;
NSString *name;
}
-(void) show;
-(void) setAge:(int)a;
-(NSString*) name;
-(void) setName:(NSString *) n;
-(NSString *) getName;
@end
Student。m文件
#import "Student.h"
@implementation Student
-(void) show
{
NSLog(@"我的名字:%@,我的年龄:%i",name,age);
NSLog(@"会不会调用set方法呢");
self.name=@"张三";
}
-(void) setAge:(int)a
{
age=a;
}
-(void)setName:(NSString *)n
{
NSLog(@"会调用setName啊");
name=n;
}
-(NSString *)name
{
NSLog(@"会调用name");
return name;
}
-(NSString *)getName
{
NSLog(@"会调用getName方法");
return name;
}
@end
类方法的调用
main。m文件
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *hello=@"object—c 你好";
NSLog(@"%@",hello);
Student *student=[[Student alloc] init];
[student setName:@"郭靖"];
[student setAge:20];
[student show];
[student name];
student.name=@"黄蓉";
NSLog(@"%@",student.name);
}
return 0;
}