1.NSObject 指针 是一个万能指针可以指向任何对象,编译不会报错(因为OC是弱语法) 也不会警告(里氏替换原则).
"NSObject * 指针有一个缺点:NSObject * 指针指向了一个自己定义的对象的时候,想通过这个指针调用自己定义的对象的方法时必须强转,避免编译器报错
2. id类型 是一个typedef过的指针类型;所以声明 id变量的时候不需要加"*"
id 和 NSObject *都是万能指针,他们的区别在于:指针类型是NSObject * 那么编译时会做编译检测; id指针 那么编译直接通过
id指针的优缺点:优点:不做任何的编译检查;缺点:不做任何的编译检查,不能通过id指针使用点语法,但是可以直接调用getter和setter方法
3.写一个和类名同名的类方法/带有参数的类方法
+ (Person *)person;//personWithxxx
+ (Dog *)dog;
+ (Student *)student;
以后返回值如果是这个类本身的对象 那么返回值就是instancetype 表示这个类本身的对象
id 和 instancetype的区别: instancetype 只能作为方法的返回值; id指针 是一个万能指针 通常id可以用来定义一个可以指向任何对象的指针变量
|
|