- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
IOS开发学习总结Objective-C面向对象之成员变量、模拟类变量与单例模式
延时符
Contents
目录
成员变量与属性概述
模拟类变量实现方法
单例模式原理及实践
成员变量与单例模式结合应用
电脑资料整理与分享
总结与展望
延时符
01
成员变量与属性概述
在Objective-C中,成员变量是定义在类接口或实现文件中的变量,用于存储类的状态信息。
成员变量定义
成员变量是类实例的基础,它们存储了每个对象的状态,并允许对象之间的状态彼此独立。
作用
成员变量定义与作用
属性是对成员变量的封装,提供了更安全的访问方式。
属性使用@property关键字声明,并通过getter和setter方法与成员变量进行交互。
属性可以定义读写权限,以及是否使用原子操作等特性。
属性与成员变量关系
通过将成员变量隐藏在类的内部,并通过属性对外提供访问接口,实现了数据的封装。
Objective-C通过访问修饰符(如@private、@protected、@public)来控制成员变量的访问权限。
封装性及访问控制
访问控制
封装性
在Objective-C中,初始化是通过在类中实现特定的初始化方法(如initWithName:)来完成的。这些方法用于设置成员变量的初始状态。
初始化
懒加载是一种延迟初始化的策略,即当第一次访问某个属性时,才进行初始化操作。这可以提高程序的启动速度,并减少不必要的资源消耗。在Objective-C中,可以通过重写getter方法来实现懒加载。
懒加载
延时符
02
模拟类变量实现方法
静态全局变量方式
在类的实现文件中定义一个静态全局变量,用于存储类变量的值。
通过类方法或实例方法访问该静态全局变量,实现类变量的读写操作。
实现简单,访问效率高。
破坏了封装性,容易引发命名冲突。
定义
访问
优点
缺点
定义
访问
优点
缺点
类方法返回单例对象
01
02
03
04
定义一个类方法,该方法返回一个单例对象,该对象用于存储类变量的值。
通过类方法访问单例对象,实现类变量的读写操作。
实现了封装性,避免了命名冲突。
每次访问类变量都需要创建或获取单例对象,效率略低。
定义
访问
优点
缺点
使用运行时库中的关联对象技术,将类变量与一个全局唯一的key关联起来,存储在内存中。
实现了封装性,避免了命名冲突,且不需要创建单例对象,效率较高。
通过类方法或实例方法,使用关联对象的key访问类变量的值。
需要使用运行时库中的API,增加了代码的复杂性。
问题描述
01
在多线程环境下,多个线程同时访问和修改类变量可能会导致数据不一致的问题。
解决方案
02
使用线程同步机制,如互斥锁、自旋锁等,确保同一时间只有一个线程可以访问和修改类变量。或者使用原子操作等线程安全的方式来访问和修改类变量。
注意事项
03
过度使用线程同步机制可能会导致性能下降,需要权衡性能和线程安全性的关系。
线程安全问题考虑
延时符
03
单例模式原理及实践
单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。
定义
确保一个类只有一个实例。
唯一性
提供一个全局访问点,方便其他对象访问该实例。
全局访问
在第一次使用时才创建实例,避免不必要的资源浪费。
延迟实例化
在类中定义一个静态变量来保存单例对象,并在类方法中返回该对象。
静态变量实现
GCD实现
宏定义实现
使用GrandCentralDispatch(GCD)的dispatch_once函数确保线程安全地创建单例对象。
使用宏定义简化单例模式的实现代码,提高代码可读性。
03
02
01
Objective-C实现单例模式方法
使用互斥锁(如pthread_mutex_t)来确保在多线程环境下单例对象的线程安全创建。
互斥锁
使用原子操作(如OSAtomicCompareAndSwapPtr)来避免多线程竞争条件,确保单例对象的唯一性。
原子操作
利用GCD的dispatch_once函数,它保证在应用程序的生命周期内只执行一次特定的代码块,从而实现线程安全的单例模式。
GCD实现
线程安全单例实现策略
懒汉式
在第一次使用时才创建单例对象。优点是按需创建,节省资源;缺点是存在线程安全问题,需要使用同步机制来确保线程安全。
饿汉式
在程序启动时即创建单例对象。优点是线程安全,无需同步机制;缺点是无论是否使用都会创建对象,可能造成资源浪费。
比较
懒汉式和饿汉式各有优缺点,选择哪种方式取决于具体应用场景和需求。在需要节省资源且能确保线程安全的情况下,可以选择懒汉式;在需要简单快速地获取单例对象且不介意提前创建对象的情况下,可以选择饿汉式。
懒汉式与饿汉式比较
延时符
04
成员变量与单例模式结合应用
存储单例状态
成员变量用于保存单
您可能关注的文档
最近下载
- 《旅行社经营与管理》电子教案 2-3 旅行社产品开发与设计3.docx VIP
- 2025年知识付费行业市场细分领域竞争格局分析.docx VIP
- 《贵细中药饮片推荐目录及管理策略》.docx VIP
- 《旅行社经营与管理》电子教案 7-2 旅行社客户和质量管理2.doc VIP
- 《旅行社经营与管理》电子教案 2-2 旅行社产品开发与设计2.docx VIP
- 统编版语文四年级上册9《古诗三首》课件(共24张PPT).pptx
- 光子学现代通信光电子学 第6版 [(美)亚里夫,(美)耶赫 著] 2014年版_部分20.pdf VIP
- 第21课 马克思主义的诞生和国际共产主义运动的兴起 课件(共15张PPT)(含音频+视频).pptx VIP
- 教科版(2024)小学科学一年级上册(全册)教案及反思(含目录).docx VIP
- 《旅行社经营与管理》电子教案 7-1 旅行社客户和质量管理1.doc VIP
文档评论(0)