**1.增强@property:**自动生成getter和setter方法的声明和实现。
原理:①自动声明私有属性②自动生成getter和setter方法的声明和实现。
@property 数据类型 变量名
注意变量名要去掉下划线,如果同时重写getter和setter那么不回自动声明私有属性。
**2.@synthesize:**自动生成getter和setter的实现。
@synthesize 变量名;
**3.弱语言:**编译器在检查语法时不严格
**4.静态类型:**指针指向的是本类对象。
**5.动态类型:**指针指向的不是本类对象,可能是子类。即父类指针指向子类对象。
**6.编译检查:**能不能调用看指针的类型。
**7.编译检查:**能不能调用看对象里有没有这个方法。
**8.id:**万能指针,声明不需要加*,可以指向任意的OC对象,
**9.id和NSObject的区别:**NSObject会做编译检查,id只能调用对象的方法,不能使用点语法。
**11.id和instancetype的区别:**instancetype只能作为方法返回值,id可以是指针变量、参数、返回值。instancetype有类型,代表当前类的对象。id仅是一个指针,是地址。
12.instancetype:方法返回当前类的对象。创建用self,返回用instacetype。
**13.respondsToSelector:**判断当前对象是否有这个方法。
**isKindOfClass:**判断当前对象是不是指定类的实例。
**isMemberOfClass:**判断当前对象是否为指定类的实例,不包括子类。
**isSubclassOfClass:**判断当前类是否为另一个类的子类。
14.new是alloc和init组合,alloc是类方法,创建这个类的一个对象。init是对象方法,初始化对象,为对象的属性赋默认值。[Person new]=[ [ Person alloc ] init ]。
init:如果是基本数据类型就是0,如果是C指针就是NULL,OC指针就是nil,
重写init规范:-(instancetype)init{
if(self = [super init]){
//赋值
}
}
如果要传参方法名为initwith×××