OC
文章平均质量分 63
Developer_mk_iOS
iOS开发
展开
-
Pod私有库创建的步骤
一 代码提交1.使用pod命令创建pod私有库模板工程 pod lib create “xxx”2.需要提交的代码放在 Classes文件夹内,需要引用的资源放在Assets文件夹3.修改.podspec文件中,其中souce代表私有库的git地址,souce_files代表私有库中存在代码的文件夹,resouce_bundles 代表资源文件夹, dependency 代表私有库引用的其他framework4.使用pod lib lint ‘xx’.spec 检查私有库是否有问题需要更正,原创 2021-07-28 10:59:01 · 554 阅读 · 0 评论 -
GCD_dispatch_barrier_async
在访问数据库时使用Serial Dispatch Queue队列时可避免数据竞争问题。写入处理确实不可以和其他的写入和读取处理并行执行,但是读取处理与读取处理可以并行执行。在3用dispatch_barrier_async例如:dispatch_queue_t concurrentQueue1= dispatch_queue_create("www.goole.com", DISPATC...原创 2018-12-18 15:23:42 · 97 阅读 · 0 评论 -
GCD dispatch_async()和dispatch_sync()
dispatch_async() 指不等待处理执行结束(等待任务结束)dispatch_sync() 和dispatch_async() 相反 在任务结束之前 程序不会接着往下运行线程死锁 任务之间相互等待 //1.主线程队列中同步添加任务 dispatch_sync()相当于主队列的一个任务1 切线程正在执行任务1 block块中的相当于任务2 任务2也没添加到主队列切是同步添加的...原创 2018-12-18 15:25:09 · 154 阅读 · 0 评论 -
GCD dispatch_appay
dispatch_appay:将任务按指定的次数追加到指定的队列中,并等待全部完成之后返回 同步函数例:dispatch_apply(self.array.count, queue, ^(size_t index ) { NSLog(@"数组中第%zu个个体是%@",index,[self.array objectAtIndex:ind...原创 2018-12-18 15:26:11 · 118 阅读 · 0 评论 -
GCD dispatch_suspend/dispatch_resume
dispatch_suspend: 挂起指定的队列dispatch_resume : 回复指定的队列 这些函数对已经执行的处理没有影响,挂起后 追加到队列中但尚未执行的处理在此后停止运行。而恢复后使得这些处理能够继续进行...原创 2018-12-18 15:26:53 · 173 阅读 · 0 评论 -
GCD dispatch Semaphore(信号量)
dispatch_semaphore_create 创建一个semaphore 函数有一个整形的参数,我们可以理解为信号的总量dispatch_semaphore_signal 发送一个信号 自然会让信号总量加1dispatch_semaphore_wait 等待信号 当信号总量为0的时候会等待 大于等于1时会返回并对信号总量减1例: NSUrlsession 同步请...原创 2018-12-18 15:27:51 · 141 阅读 · 0 评论 -
GCD dispatch_once
在程序执行中只执行一次指定处理的api, 使用dispatch_once 生成单例#import <Foundation/Foundation.h>@interface singleobj : NSObject<NSCopying>+(singleobj*)sharedSingle;@end#import "singleobj.h"@i...原创 2018-12-18 15:28:51 · 126 阅读 · 0 评论 -
GCD dispatch_Source_t
dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。 1.source的类型DISPATCH_SOURCE_TYPE_PROCDISPATCH_SOURCE_TYPE_READDISPATCH_SOURCE_TYPE_SIGNALDISPATCH_SOURCE_TYPE_TIM...原创 2018-12-18 15:29:21 · 176 阅读 · 0 评论 -
iOS系统下的cookie机制
iOS系统提供cookie存储以及管理机制1 cookie存储机制1.1 iOS 每一个app和app extension 有自己单独的cookie存储容器即sharedHTTPCookieStorage 的实例对象,sharedCookieStorageForGroupContainerIdentifier 的实例对象管理app group的cookies。1.2 UIWebview...原创 2019-02-11 14:14:26 · 1110 阅读 · 0 评论 -
GCD Dispatch Group
1.在gcd中,如果想在几个队列的任务执行完之后去做另一件事办法:如果是Serial Dispatch Queue队列可以使用dispatch_set_target_queue 函数把一个(Serial Dispatch Queue)队列作为几个队列的目标队列,这样在顺序执行完几个队列的任务之后就会执行目标队列的任务。但是如果想几个并发执行的队列实现此功能需要用到 Dispatch Gro...原创 2018-12-18 15:21:54 · 124 阅读 · 0 评论 -
GCD 延时操作
1.表示时刻的宏定义DISPATCH_TIME_NOW DISPATCH_TIME_FOREVER2.表示时间单位的宏定义NSEC_PER_SEC 秒 NSEC_PER_MSEC 毫秒dispatch_time_t(arg1,arg2) 可以获取从arg1时刻起到arg2时间长度之后的时间段dispatch_time_t patch_time1=dispatch_tim...原创 2018-12-18 15:20:30 · 208 阅读 · 0 评论 -
GCD的两种队列
1.Dispatch Queue种类 1.Serial Dispatch Queue 串行2.Concurrent Dispatch Queue 并发 2.如何得到这两种队列1.通过 dispatch_queue_create("www.baidu.com", DISPATCH_QUEUE_SERIAL);dispatch_queue_create...原创 2018-12-18 15:19:06 · 528 阅读 · 0 评论 -
Runloop 机制
1.什么是runLoop :一般来讲,一个线程一次只能执行一个任务执行完之后线程就会退出,runloop保障线程随时处理事件但不退出 ,RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数,线程执行了这个函数后,就会一直处于这个函数内部 "接受消息->等待->处理" 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回。...原创 2018-11-12 16:51:15 · 226 阅读 · 0 评论 -
OC 对象模型
类的内存结构 NSObject :绝大多数OC对象的基类(NSProxy除外)在NSObject类中可以看到一个Class类型的isa 实例变量 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY;}在objc类中可以看到(isa)Class实际上是指向结构体为obj...原创 2018-11-12 16:52:49 · 330 阅读 · 0 评论 -
NSObject load,initialize方法调用
+ (void)load;方法会在类加载进入内存的时候调用 无论是否使用该类 Category +load methods are not called until after the parent class's +load.(如果某类存在category,category的load方法在类的load方法加载之后) Class +load methods are called s...原创 2018-11-12 16:55:23 · 165 阅读 · 0 评论 -
self super 到底代表什么
在ios的方法中,自带两个参数self,_cmd(SEL)1.self 指代什么 self指代当前消息的接受者 2.在方法内,如果想要调用父类的方法,需要使用super 调用,但此时不代表消息的接受者是父类 原理:在<objc/message.h>中有两个函数1.objc_msgSend(id _Nullable self, SEL _Nonnull op, …)...原创 2018-11-12 16:57:50 · 174 阅读 · 0 评论 -
KVC和KVO的一点研究
1 使用KVC 即 - (void)setValue:(nullable id)value forKey:(NSString *)key 给属性赋值的步骤1.1 在实例所在类中查找与key对应的 asserror方法(setter方法)-set<Key>,如果没找到进入1.2步骤,如果找到接下来判断该方法的参数类型是否是对象类型,如果不是对象类型,那么先进行转换比如nsvalue ...原创 2018-11-12 17:16:17 · 201 阅读 · 0 评论 -
Auto Layout Process 自动布局过程
与使用springs and struts(autoresizingMask)比较,Auto layout在view显示之前,多引入了两个步骤:updating constraints 和laying out views。每一个步骤都依赖于上一个。display依赖layout,而layout依赖updating constraints。 updating constraints->l...原创 2018-11-12 17:17:28 · 157 阅读 · 0 评论 -
copy和mutableCopy
数组的copy和mutableCopy1、person * str0=[person new]; NSArray* array1=[NSArray arrayWithObjects:str0, nil]; 此时 对象str0的引用计数为22.person * str0=[person new]; NSArray* array1=[NSArray arrayWithOb...转载 2018-11-12 17:22:19 · 235 阅读 · 0 评论 -
OC内存管理的一些研究
1.内存分配 静态区 栈区 堆区静态区: 1.代码区 2.初始化区 (初始化的全局变量和静态变量)3.未初始化区(未初始化的全局变量和静态变量) 栈区:由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,线程之间栈控件是不共享的。优点是快速高效,缺点时有限制,数据不灵活。栈区地址从高到低分配;[先进后出] 堆区:比较灵活,动态分配和释放,堆中的对象都是以指针来访问的,指...原创 2018-11-12 17:23:49 · 160 阅读 · 0 评论 -
学习block时的一些笔记
1.完整写法void(^ blockName)(arg)=void^(arg){};2.block 可以使用截取到的自动变量,但是不允许修改重新赋值。例:int m=3; char* str1="str1"; void(^block1)(void)=^(){ NSLog(@"%d,%s",m,str1); }; ...原创 2018-11-13 09:08:59 · 60 阅读 · 0 评论 -
OC的消息发送以及转发机制
SEL:Objective-C在编译时,会依据每一个方法的名字、参数序列,生成一个唯一的整型标识(Int类型的地址),这个标识就是SEL.本质上,SEL只是一个指向方法的指针.Method:Method = SEL + IMP + method_types,相当于在SEL和IMP之间建立了一个映射IMP:实际上是一个函数指针,指向方法实现的首地址 一、OC的消息机...原创 2018-11-12 16:49:09 · 843 阅读 · 0 评论