ios单件实例是什么 ?

ios单件实例是什么 ?,第1张

Foundation 和 Application Kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。举例来说,NSFileManager 和NSWorkspace 类在使用时都是基于进程进行单件对象的实例化。当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配 和初始化。单件对象充当控制中心的角色,负责指引或协调类的各种服务。如果类在概念上只有一个实例(比如 NSWorkspace),就应该产生一个单件实例,而不是多个实例;如果将来某一天可能有多个实例,您可以使用单件实例机制,而不是工厂方法或函数。

1、类方法 :Class Method 有时被称为静态方法,类方法可以独立于实例对象而执行。在使用类方法时要注意以下几点:

2、实例方法: 必须由类的实例对象调用,可以访问属性,实例变量,同样可以访问类对象,使用限制相对于类方法较少。

总的来说: self 会优先调用本类中的方法, super 会优先调用父类方法。但是, self 是指向本类的指针,是类的隐藏参数,指向当前调用方法的对象(类对象或者实例对象), super 却不是指向父类的指针,只是一个编译器标识符,其在运行时中与self相同,指向 同一个消息接受者 ,只是 self 会优先在当前类的methodLists中查找方法,而 super 则是优先从父类中查找, 向super发送消息是一种调用继承链上的超类定义的 方法实现 的方法。

结果分析:

经过上面的例子再回来看self和super的实现原理可能更加好理解:

这样结合上述例子和self和super的原理就会很容易明白为什么 [self class] 和 [super class] 输出结果会是一样的,同时在 BaseViewController 的 viewDidLoad 中 [self class] 和 [super class] 输出都是子类类对象了

iOS中关于类方法和实例方法及self和super


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11296479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存