object-c 注意点

变量名称必须以字母或_开头

 -(void)print,表示是一个实例方法(instance method);+(void)print,表示是一个类方法(class method)。

类方法可以用于创建对象,一旦调用一定要release。


字符串前面用@,如 NSString *name = @"Chase";

使用id来表示一个对象,实际就是指向对象的指针,但如果明确类型时,应避免使用id,因为不容易看出对象的类型。

1. 构造方法:init 

一般都需要重写构造方法

-(id)initWithObject1: (type) object1 andObject2:(type) object2{

if (self=[super init]){ //判断不为空,便赋值

_object1=object2; // 给成员变量赋值

_object2=object2;

}

}

在main函数中可以直接赋值

Student *stu=[[Student alloc] initWithObject1: a andObject2:b]

NSLog(@"%I and %i", stu.Object1, stu.Object2);

这里的stu.后面的是调用的方法,这个调用的是get方法

self. 后面调用的才是成员变量。


1. description 方法

不需要在.h文件中声明,因为这是NSObject的成员方法

可以在.m中重新定义实现

如果不实现自己description 就会调用nsobject的,输出首地址

重写父类方法

当使用%@打印一个对象是,会调用此方法

-(NSString *)description
{
    NSString *str = [NSString stringWithFormat:@"name:%@ age:%d sex:%@",_name,_age,_sex];
    return str;
}

能输出实例变量的值,但须记住其返回值一定是NSString类型



1. @property 类型 成员变量

替代:set 和get方法的声明

2. @synthesize 成员变量

替代set 和get方法的定义。

在Xcode 4.5环境下,可以省略@synthesize,并且默认会去访问(_成员变量)

//如果找不到(_成员变量),会自动生成一个叫(_成员变量)的私有变量


在object-c中,系统自动会为每个创建的对象保存一个引用计数器。当对象被创建时,引用计数设置为1,每一次必须保持该对象时,需要发送(即调用)retain来使得引用计数加1。不再需要对象时,可以发送release消息,使得引用计数减1。当引用计数为0的时候,系统就会释放它的内存(通过向对象发送dealloc消息,也就是真正地去回收对象的内存)。另外,可以用retainCount来得到这个对象的引用计数,返回的类型是NSUInteger整数。基本的调用方式如下:
[obj retain];
[obj release];
[obj retainCount]; 

//在.h中有声明,不必声明dealloc方法

一般会重写dealloc方法,用于验证对象是否被释放

dealloc只会被调用一次。

-(void) dealloc {
    printf( "Deallocing ClassA\n" );
    [super dealloc];
}

谁创建,谁释放

谁alloc 谁 release

谁retain 谁 release

谁copy 谁 release 



@class 用在 .h 文件中,因为文件只是声明,所以只需要知道他的类的存在,这时编译器不再需要处理整个.h头文件,会适当提高效率

当前类需要引用类中的方法,仅用@class指令时不够的,因为编译器需要 更多信息,比如:该方法中有多少参数,参数是什么类型,方法的返回类型等,而@class仅仅是提供了一个已知的类名称,此时只能用#import “.h”。

尤其是在相互嵌套的时候 NSObject 不能用@class, 因为需要知道夫类存在哪些方法, 在子类中才不会重复声明



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值