第五天 @property 和构造方法
点语法的实质是 调用(调用get/set方法)
运用点语法时候 如果是在等号的左边则调用的是set方法
在等号右边的是调用的get方法
注意点语法中运用self运用点语法 会造成死循环(自身调用自身而且没有结束的条件)
@property int age;
生成实例变量_age的get/set方法的声明和实现
Xcode 默认生成的是@synthesize name;
如果指定带下划线的则应该重新定义一个带下划线的成员变量
@synthesize name = _name;
setter/getter不可以同时重写,会报错(只能重写一个)
动态类型 直到执行的时候才确定所属的类型
静态类型 在编译时就知道它所属的类型
id 可以存储于任何类的对象 (万能类)
NSObject 会进行编译检查
id 不会进行编译检查(运行的时候才会检测)
instancetype id 都可以作为方法的返回值
id 返回未知类型对象
instancetype 返回的是确定类型的对象(instancetype 是iOS5以后出现的)
instancetype 只能返回和方法所在的相同类型对象
id 可以用来定义对象
instancetype 不可以定义对象
一个对象能调用指定方法,不由编译器决定由运行时决定
对象运行时获取其类型的能力(内省)
-(BOOL)isKindOfClass:classObj
(dog isKindOfClass:Animal)(返回值是0或者1)
判断对象是否是这个类或这个类的子类的实例对象
1、isKindOfClass:Class
判断实例对象是否是这个类或者这个类的子类的实
例。
2、isMemberOfClass:Class
判断是否是这个类的实例。
3、+(BOOL) isSubclassOfClass:classObj
判断类是否是指定类的子类。
4、respondToSelector:selector
确定对象是否可以对某个SEL做出响应
5、+(BOOL) instancesRespondToSelector:
判断类是否有这个方法。此方法是类方法, 不能用在类的对象
6、conformsToProtocol:protocol
检查对象是否符合协议,是否实现了协议中所有的必选方法。
构造方法
用来初始化对象的方法
1. 使用alloc方法分配内存(内存已被清零)
2.使用init方法来对 对象初始化
3.返回 对象首地址
nil: oc中对象中的空值
null: 服务器返回字段的空值
NULL: C语言指针变量空值
NIL: 类对象的空值
init
1.初始化父类的东西(为了保证父类的初始化)
2.判断父类有没有返回成功
3.返回self
self = [super init]; 给self赋值
子类和父类的self指向的是同一个空间
自定义构造方法的格式
1.一定是对象方法(以减号开头)
2.返回值一般是id类型(instancetype)
3.方法名一定已initwith开头 |
|