day05 _未完待续

@proerty 和 @synthesize

@proerty:编译器指令,当我们在类的声明中使用 @property,它会自动生成标准的setter和getter方法的声明 
@synthesize: 
1、用类的实现中,可以生成setter和getter方法的实现 
2、生成一个私有成员变量,这个私有的成员变量与@synthesize后面的名字一样 
我们可以指定 @synthesize 生成setter 和getter放的时候使用哪个成员变量,这个时候它就不会生成与@synthesize 后面的名字同名的私有成员变量了

 
 
@synthesize age = _age;

当然还可以使用增强的#proerty和@synthesize,参考 
Objective-C中的@property和@synthesize用法 
http://blog.csdn.net/zhiganglet/article/details/7546333 
需要注意的是

在使用@property增强的时候如何自定义setter方法 
1、如果你实现自定义的setter方法,@property就不会帮你生成它的setter方法,但仍然会帮你生成getter方法和私有的成员变量 
2、如果你实现自定义的getter方法,@property就不会帮你生成它的getter方法,但仍然会帮你生成setter方法和私有的成员变量

3、如果你同时实现自定义的setter 和 getter方法,@property就不会帮你生成它的setter 和 getter方法,同时也不会帮你生成私有成员变量了

id 类型 (类似C++11 的auto)

id 类型是一个万能对象指针类型,它可以指向任意类对象 
id 类型本身就是一个指针类型,接收对象时候不要再加 * 了;

id:缺点: 
所有它任意对象上的方法它都可以调用,但如果这个对象上不存在这个方法,那再运行时就报错 
它不会进行编译时的检查 
当是用id类的变量去调用一个方法的时候,它会提示很多类似方法,不容易找到自己对象上的方法

优点:在只有是同时实现了某些方法的对象上产生多态特性

id 也叫 类型动态类 
静态类型: 特定类的类型 
1、提供编译时,如果对象上没有这个方法就再编译的时候报错 
2、写代码的时候它的提示比较准确 
在一般情况我们使用的都是静态类型 
例子:

 
 
#import "CZPerson.h"
#import "CZDog.h"
 
int main(int argc, const char * argv[]) {
CZPerson *person = [CZPerson new];
person.age = 10;
NSLog(@"%d",person.age);
 
// [person setName:@""];
id pi = person;
 
[pi setAge:20];
NSLog(@"%d",[pi age]);
// id类型不可以使用点语法,也不可以使用 ->
// pi.age = 40;
 
// [pi setName:@"haha"];
 
pi = [CZDog new];
[pi setAge:4];
NSLog(@"%d",[pi age]);
 
 
 
return 0;
}

私有方法 其实就C++的类的私有方法(也叫私有函数,只不过oc中这种方法不写在声明中,外部看不到而已)

//私有方法:不能在外界调用的方法,只有实现没有声明的方法 
//OC只有在实现文件中的定义的这个方法是私有,但是不是绝对的私有; 
//私有方法:就是不让外界调用方法

//如果在一个类的方法可以写成私有的就不要写成公开的

重写init方法

重写init必须要做三件事 
1、必须要调用父类init 
2、必须检验父类的init是否成功初始化 
3、返回自己指针 
//有时候需要在初始化的时候从外界传入一些值 
//OC init family 
//自定义自己的初始化方法 
//1、必须以initWith开头 
//2、返回值类型必须是id 或 instancetype 
//不是init 家族的方法,就不可以给self赋值

参考文章:iOS开发系列--Objective-C之类和对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值