一、中介者模式中介者,顾名思义,即一个处理各种交互集中化操作的角色。面向对象的设计思想鼓励把行为分散到不同的对象中,但是,这种行为的分散可能在一定程度上增大对象之间的关联,增大了系统的耦合度,为后期的维护和扩展带来不便。中介者模式定义了一个集中的场所,对象间的交互可以在一个中介者对象中集中处理,其他对象不必彼此交互,这样就减少了对象之间的关联。定义:用一个对象来封装一系列对象的交互方式。中介者使得
转载 2024-01-17 10:22:04
72阅读
Core Telephony Framework(核心通讯框架)概述:这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使用。当然我们也可以仅仅是用此信息来获得当前正在通话的信息。CT的对象可以获得通讯信息,例如可以利用此进行网络电话(VoIP — Voice over Internet Protocol)。而又如CTCal
转载 7月前
39阅读
深入详解  IOS strong  和 weak今天写点深刻的关于内存管理的东西 IOS  采用arc  管理内存    让程序员不在纠结于内存的开辟释放等繁琐的工作让内存管理更加简单  arc  是类似于垃圾回收机制  当一个对象没有一个强引用 指向它的时候  该 对象就会被自动释放 当
转载 2023-09-06 20:26:54
7阅读
基本概念@property用于定义属性,将会自动生成getter和setter方法,并生成带 “_” 的成员变量,同时属性提供了一些可能会使用的特性来进行声明,包括assign(vs copy),weak,strong,atomic(vs nonatomic),readwrite,readonly等 @property本质:@property = ivar(实例变量) + getter/sette
转载 2024-07-04 20:00:42
88阅读
远程推送解决了当APP处于终止状态,client与sever断开时的通信困境,APNS是苹果所提供的一套服务。远程推送要求设备必须保持联网状态,若设备处于断网状态,这APNS将为其保留最后一条推送消息,若设备长时间处于断网状态,则将不再为其保留推送消息。一、APNS的推送机制推送机制如下图所示:Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification
转载 2023-06-25 23:19:18
108阅读
1.格式@property (参数1,参数2,...) 类型 名字; eg: @property(nonatomic,retain) UIWindow *window; 其中参数主要分为三类: • 读写属性: (readwrite/readonly/setter = /getter = ) • setter语意:(assign/retain/copy) • 原⼦子性: (atomicit
转载 2024-05-21 06:38:59
46阅读
MJRefresh 是 OC 语言里面算是一款比较通用的刷新框架了,可以用于 UITableView 和 UICollectionView 的刷新,从而可以很方便的完成下拉刷新和上拉加载更多。而且可定制程度也很高。最近需要在公司的项目上加入一个刷新的特效,而公司项目用的刷新框架是 MJefresh ,所以在完成需求的同时就顺便把 MJRefresh 框架的源码给看了一遍。然后写下这篇文章总结一下。
目录KVC 简介KVC 的基本使用KVC 对(非对象指针类型的值)的处理KVC 的搜索模式通过 KVC 进行字典与模型的相互转换KVC 与集合类型KVC 的集合运算符KVC 对异常的处理KVC 的其他细节自定义 KVC KVC 简介相关文档Key-Value Coding Programming GuideNSKeyValueCoding.h 代码注释KVC 的概念KVC(Key-Value C
转载 2023-10-05 22:56:27
57阅读
1 KVO是什么?  KVO是Objective-C对观察者模式的一种实现,另外一种是通知机制(notification)  KVO提供一种机制,指定一个被观察对象(例如A类),当对象的某个属性(例如A中的字符串name)发生更改时,对象会获得通知,并做出相应的处理。  在MVC设计架构下的项目,KVO机制很适合实现model模型和view视图之间的通讯。  例如:代码中,在模型类A创建属性数据,
转载 2023-07-20 15:26:03
71阅读
简要概述synchronized底层原理 synchronized与可见性JMM关于synchronized的两条语义规定了:线程加锁前:需要将工作内存清空,从而保证了工作区的变量副本都是从主存中获取的最新值。线程解锁前;需要将工作内存的变量副本写回到主存中。大概流程:清空线程的工作内存->在主存中拷贝变量副本到工作内存->执行完毕->将变量副本写回到主存中->释
转载 2024-08-03 14:24:45
28阅读
一、weak 基本用法weak 是弱引用,用 weak 来修饰、描述所引用对象的计数器并不会增加,而且 weak 会在引用对象被释放的时候自动置为 nil,这也就避免了野指针访问坏内存而引起奔溃的情况,另外 weak 也可以解决循环引用。拓展:为什么修饰代理使用 weak 而不是用 assign?assign 可用来修饰基本数据类型,也可修饰 OC 的对象,但如果用 assign 修饰对象类型指向
转载 2024-02-04 21:22:10
116阅读
需求一:将字典转换成自己需的对象,对象的属性是字典的key值,直接使用key值获取数据存在两个缺点,一是key值难以记忆,二是直接使用key值Xcode不会有智能提示,很容易导致未知的错误。使用模型时,可以直接通过点语法将需要的数据点出,保证数据准确无误。使用模型的优点还在于存储、传值都比较方便,不容易出错。最主要的是这也符合我们MVC和MVVM的设计模式。 注意:要使用模型就离不开KV
转载 2023-08-12 11:27:28
88阅读
文章目录 一、KVC(键值编码 key-value-coding) 1、概念 2、简单使用 1> 注册观察者,添加观察对象属性 2> 实现回调方法 3> 移除观察者 4> 测试触发kvo 3、注意细节 二、KVO(键值监听 key-value-observer)
转载 2023-08-18 21:52:12
75阅读
KVCKVC(key-Value coding) 键值编码,指iOS开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。不需要调用明确的存取方法,这样就可以在运行时动态访问和修改对象的属性,而不是在编译时确定。KVC的定义都是对NSObject的扩展来实现的(Objective-C中有个显示的NSKeyValueCoding类别名,而Swift没有,也不需要)。所以对于所有
转载 2023-07-31 21:33:21
83阅读
block实质序言上篇文章中主要通过简单的demo展示了block的使用场景,本篇将基于上篇文章iOS 技术篇:从使用到了解block底层原理 (一)进一步了解block底层的实现原理。block作为一种"带有自动变量值的匿名函数",在实际编译时,我们无法转换成我们能够理解的源代码,但clang(LLVM编译器)具有转化为我们可读源代码的功能。终端输入如下命令行,可获取.cpp文件。clang -
转载 2024-06-03 19:11:17
56阅读
单例设计模式是IOS开发中一种很重要很常用的一种设计模式。它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例。下面是苹果官方文档中关于单例模式的图片:    如图所示,左边的图是默认的多例模式,只要发送请求去创建对象,就会得到一个新的对象;而右侧的图是单例模式,发送多个请求创建对象,但是最后返回的始终是同一个。  因为创建单例类的实例是在确保没有其他实例的情况下才创
转载 2024-01-15 20:54:19
46阅读
分类(Category)分类的作用:在不改变原来类的内容的基础上,为类增加一些方法。使用注意: 1> 分类只能增加方法,不能增加成员变量2> 分类方法实现中可以访问原来类中声明的成员变量 3> 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原方法无法使用。 4> 方法调用优先级:分类(最后参与编译的分类优先)-->原类-->父类 分类的写
转载 2023-09-10 18:39:36
131阅读
1.synchronized的三大属性一、原子性:确保线程互斥的访问同步代码 二、可见性:保证共享变量的修改能够及时可见 三、有序性:有效解决重排序的问题从语法上讲,synchronized可以把任何一个非null对象作为“锁”,在HotSpot JVM实现,锁有个专门的名字:对象监视器(Object Monitor)2、synchronized的三种作用作用1.当synchronized作用在实
转载 2023-08-11 21:26:50
97阅读
event Loop简介Event Loop即事件循环,也就是我们经常使用异步的原理。 是指浏览器或Node的一种解决javaScript单线程运行时阻塞的一种解决方案机制。众所周知我们JavaScript的执行是单线程的,代码是从上往下依次执行的,只有当上一个任务完成之后才会继续完成下一个任务,如果前一个任务耗时很长,后一个任务就不得不一直等着。于是我们的执行代码被分为同步任务与异步任务同步任务
 一、什么是CocoaPods1、为什么需要CocoaPods在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要: 下载开源库的源代码并引入工程向工程中添加开源库使用到的framework解决开源库和开源库以及开源库和工程之间的依赖关系、检查重复添加的framework等问题如果
  • 1
  • 2
  • 3
  • 4
  • 5