1.接口的声明
尽管接口声明是类声明的一部分,但实际上oc将接口和实现分开是有其好处的,这样接口声明部分可以单独拿出来使用(import),而oc的类则有接口声明部分和接口的实现部分共同组成
@interface Person : NSObject{
NSString * name;
int age;
NSString * major;
}
-(void)setName:(NSString *)name andAge:(int) age;
+(void)dowork:(BOOL) fake;
-(void)onejob:(int) number;
@end
2.方法声明中返回值和参数的设置
返回值用括号引起来
形参需要使用冒号:,同时形参类型用小括号引起来(),形参名不放在小括号内
可变形参使用三个点…
-(void)setName:(NSString *)name andAge:(int) age;
+(void)dowork:(BOOL) fake;
-(void)onejob:(int) number;
3.导入类(类的声明)
导入类直接导入类的声明部分即.h部分(大多数时候这里包含interface接口部分的声明)
使用@class 的方式引用其他类
#import "Person.h"
@class Class1,Class2;
4.类的实现部分(接口的实现)
存放在.m文件内
@implementation Person
+(void)dowork:(BOOL) fake{
if (fake){
NSLog(@"hi this is some information about work ");
}
}
-(void)setName:(NSString *)name andAge:(int) age{
self->name=name;
self->age=age;
}
-(void)onejob:(int) number{
NSLog(@"here we go %d)",number);
}
@end
5.类的实例化
实例化需要使用指针(类都是引用类型)
类名 * 实例名
Person *p1=[Person alloc];
Person *p2=[Person new];
Person *p3=[[Person alloc]init];//init为初始化方法
[p1 onejob:(3)];//执行方法体
6.self
self不能出现在类方法中,因为类方法的调用者是自己,而不是一个实例,self多用在实例方法中确定一个当前调用者。
-(void)setName:(NSString *)name andAge:(int) age{
self->name=name;
self->age=age;//也可以写成self.name
}
7.id类型
id可以存放任何类型
id p4=[Person alloc];
[p4 onejob:(12)];
8.id属性
通过property来替代setter和getter方法,在实现文件中使用synthesize取代getter和setter
.h文件
@property int sid;
@property (nonatomic,retain) NSString *name;
.m文件
@synthesize sid,name;