Objective-C 入门(二)对象 类 变量 方法
Objective-C 入门(二)对象 类 变量 方法
学过Java 的 面向对象比较熟悉 Objective-C也是面向对象的
我们来看Objective-c所表达的方式
先写一个类:我们看到这个类里只有熟悉和方法名字 并没用去实现 .文件
#import
@interface SKPerson: NSObject{ //创建类
NSString * name; //NSString* 属性
int age; //int 属性
}
-(void)setName:(NSString*) n; //set get 方法
-(void)setAge: (int)a;
-(NSString*)name;
- (void) go;
@end;
实现这个类的代码 .m 文件
@implementation SKPerson
-(void)setName:(NSString*) n{ //实现setName方法
If(n!=nil){
[n retain] //拿住这个对象
[ name release] //释放原来的对象
name=n;
}
}
-(void)setAge: (int)a{
Age=a;
}
-(NSString*)name{
return name;
}
- (void) go{
NSLog(@"This is a method");
}
@end;
实例化类对象的方法 .m 文件
#import
int main(int argc,const char*argv[]){
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] intit ];
SKPerson * skyoceanone;
skyoceanone=[[SKPerson alloc] init]; //也可以写成[SKPerson new]不建议
[skyoceanone setName:@"sky"];
[skyoceanone setAge:25];
[skyoceanone go];
[skyoceanone release];
[pool drain];
return 0;
}
NSString * 类型 是一个指针类型 它指向的是字符串的内存地址 OC 的代码 就是指针类型 (以后会做详细的解析指针)
然后为变量生成 get 和 set 方法 (get字母被省略) OC中不能自动生成get和set 下面介绍 另一种方法来生成 get set
属性访问器:
-(void)setName:(NSString*) n;
-(void)setAge: (int)a;
-(NSString*)name;
可以写成:
@propert (retain) NSString* name; //一行代码就实现了 set 和 get
@propert (assign) int age;
实习方法的代码可以写成:
@synthesize name;
@synthesize age;
使用方法可以写成:
Skyoceanone.name=@"sky"; //set 方法
Skyoceanone.age=25;
Skyoceanone.age; //没有=号 就相当于 使用了get方法
---------本博文针对有JAVA基础 OC还属于初学者 文中有错误的地方还请指出 特感谢赵哲老师提供图片