Objective-c - 万能指针(id指针 / NSObject指针)
来源:互联网 发布:淘宝联盟能赚多少钱 编辑:程序博客网 时间:2024/05/15 07:26
/* Objective-c - 万能指针(id指针 / NSObject指针)
NSObject万能指针和id指针都是万能指针,他们都可以指向任意的OC对象.
1> id指针
id是一个typedef类型,id指针是一个万能指针,它可以指向任意的OC对象.
当指针的类型是(NSObject *)类型,编译器在变异的时候会做编译检查.
当指针的类型是id类型的时候,编译器不会做编译检查,直接通过.
id指针的局限性,只能使用中括弧调用方法,不能使用点语法.
2> NSObject万能指针
里氏替换原则:
父类的指针指向子类的对象,对程序没有任何的影响,这就是里氏替换原则.
NSObject类是所有OC类的父类,根据里氏替换原则,NSObject指针可一直想任意的OC对象.
当NSObject指针指向子类对象的时候,如果要调用子类对象独有的方法,就必须做类型转换.
NSObject指针是一个万能指针.
当指针类型是(NSObject *)类型的时候,编译器要做编译检查.
NSObject指针的局限性,只能使用中括弧调用方法,不能使用点语法.
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 人类的创建
//声明
@interface YYPerson : NSObject
@property NSString *name;
@property int age;
- (void)sayHi;
@end
//实现
@implementation YYPerson
- (void)sayHi
{
NSLog(@"大家好!我叫%@,我今年%d岁了!",_name, _age);
}
@end
#pragma mark -
int main(int argc,const char * argv[]) {
//创建人类对象
id xiaoming = [YYPersonnew];
//赋值属性:当指针的类型是id类型的时候,编译器不会做编译检查,直接通过.
[xiaoming setName:@"小明"];
[xiaoming setAge:18];
//调用方法:当指针的类型是id类型的时候,编译器不会做编译检查,直接通过.
[xiaoming sayHi];
return 0;
}
- Objective-c - 万能指针(id指针 / NSObject指针)
- Objective-c - NSObject万能指针
- 1.5 万能指针 id
- super init重构 id 指针 NSObject指针 intancetype指针
- 万能指针
- void指针 万能指针
- void指针 万能指针
- Objective-C 指针理解
- Objective-C 指针理解
- Objective-C函数指针
- OC语言—Id万能指针
- Objective-C空指针与野指针
- 【Objective-C】空指针和野指针
- 智能指针和万能指针
- Objective-c的指针学习
- Objective-C指针、栈帧、栈
- 万能指针怎么用?
- Delphi万能指针应用
- 聚类算法分析
- C#执行批处理,当批处理不在程序根目录时,出现“找不到文件”的问题的解决方法
- java8-遍历map
- 230. Kth Smallest Element in a BST
- redisUtil
- Objective-c - 万能指针(id指针 / NSObject指针)
- 编写sql语句时,最重要的是什么?
- DialogFragment源码分析及应用实战
- Android TableFixHeaders 最后添加一行计算总和,上下不能滑动,左右可以滑动
- stm32 定时器重映射
- redis hset使用
- windows7下electron加载使用sqlite3的技术要点
- sublime设置
- 史上最精炼Java基础知识点总结