自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 魔法趣玩隐私协议

当您通过移动设备访问服务时,我们可能会自动收集某些信息,包括但不限于您使用的移动设备类型、您的移动设备唯一 ID、您的移动设备的 IP 地址、您的手机操作系统、您使用的移动互联网浏览器的类型、唯一设备标识符和其他诊断数据。我们可能会使用您的信息来评估或进行合并、剥离、重组、改组、解散或以其他方式出售或转让我们的部分或全部资产,无论是作为持续经营企业还是作为破产、清算、或类似程序,其中我们持有的有关我们服务用户的个人数据属于转让的资产。公司将仅在本隐私政策中规定的目的所需的时间内保留您的个人数据。

2024-03-06 10:54:17 411

原创 游忆时光隐私政策

当您通过移动设备访问服务时,我们可能会自动收集某些信息,包括但不限于您使用的移动设备类型、您的移动设备唯一 ID、您的移动设备的 IP 地址、您的手机操作系统、您使用的移动互联网浏览器的类型、唯一设备标识符和其他诊断数据。我们可能会使用您的信息来评估或进行合并、剥离、重组、改组、解散或以其他方式出售或转让我们的部分或全部资产,无论是作为持续经营企业还是作为破产、清算、或类似程序,其中我们持有的有关我们服务用户的个人数据属于转让的资产。公司将仅在本隐私政策中规定的目的所需的时间内保留您的个人数据。

2024-01-17 18:01:22 373

原创 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 542

原创 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 1079

原创 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 166

原创 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 118

原创 GCD dispatch Semaphore(信号量)

dispatch_semaphore_create   创建一个semaphore 函数有一个整形的参数,我们可以理解为信号的总量dispatch_semaphore_signal   发送一个信号 自然会让信号总量加1dispatch_semaphore_wait    等待信号  当信号总量为0的时候会等待 大于等于1时会返回并对信号总量减1例: NSUrlsession 同步请...

2018-12-18 15:27:51 134

原创 GCD dispatch_suspend/dispatch_resume

dispatch_suspend: 挂起指定的队列dispatch_resume :  回复指定的队列 这些函数对已经执行的处理没有影响,挂起后 追加到队列中但尚未执行的处理在此后停止运行。而恢复后使得这些处理能够继续进行...

2018-12-18 15:26:53 160

原创 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 112

原创 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 150

原创 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 90

原创 GCD Dispatch Group

1.在gcd中,如果想在几个队列的任务执行完之后去做另一件事办法:如果是Serial Dispatch Queue队列可以使用dispatch_set_target_queue 函数把一个(Serial Dispatch Queue)队列作为几个队列的目标队列,这样在顺序执行完几个队列的任务之后就会执行目标队列的任务。但是如果想几个并发执行的队列实现此功能需要用到 Dispatch Gro...

2018-12-18 15:21:54 114

原创 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 189

原创 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 515

原创 Swift内存布局以及HandyJSON

1 内存分区在一个进程在执行过程中操作系统会为其分配一块儿内存,为了更好的管理这块分配的内存。通常会把其划分为栈区,静态区,堆区。这里不在说明各个区的差别。2 swift 内存管理swift中值类型包括数值类型(Int,float),集合类型(array,dictionary,set),结构体,枚举的instance通常都是存在栈区的。class类型的instance存储在堆区。堆区的...

2018-12-16 14:58:12 708

原创 Swift 指针

1.1 swift中使用UnsafePoint结构体代替直接操作指针。通过pointee访问其引用的数据。ex-1.1 : var m = "12" let pointer = withUnsafePointer(to: &m) { (pointer) -> UnsafePointer<String> in ...

2018-12-13 16:29:38 146

原创 Swift 方法调度探究

1.方法调度分类1.1 方法调度可以分为静态调度(static dispatch)和动态调度,动态调度从实现上来说又可以划分为虚拟表也就是Table dispatch比如c++和消息分发message dispatch比如OC用到的就是消息分发机制。1.2静态调度和动态调度各有各的好处1.2.1编译器可以对静态调度的方法进行包括inline内联函数在内的编译期优化以及加快程序运行速度。...

2018-12-08 12:34:40 323

原创 Dom中的事件传递机制

Dom中的事件处理机制:1.两种事件传递机制:捕获和冒泡1.1 event capture:从父标签到子标签1.2 event bubble:从子标签到父标签1.3 W3C中的事件传递机制 复制一张W3c中关于事件处理机制的一张图片,从图中可以看出可以分为capture捕获阶段,target响应阶段,bubble冒泡阶段。2.当一个事件Event obj...

2018-11-19 14:21:20 414

原创 JavaScript中的值类型以及引用类型

最近在研究JavaScript时发现JavaScript和Swift一样,也存在值类型和引用类型相关概念可能所谓的“称呼”不一样

2018-11-14 16:21:43 91

原创 结构体和类

1 结构体和类共同点1.1 定义存储属性和方法1.2 定义subscript1.3 定义初始化方法1.4 增加类扩展1.5 遵循某个协议 2 类比结构体增加的特性2.1 继承特性2.2 type casting 类型描述2.3 Deinitializers2.4 引用计数机制 3 swift中的两种类型 值类型和引用类型3.1值类型在使用的时...

2018-11-14 16:21:27 91

原创 枚举

1 基本形式 enum CompassPoint {       case north       case south       case west       case east } var direction = CompassPoint.east 2 枚举结合switch使用 switch direction {...

2018-11-13 11:13:35 71

原创 闭包

 1 swift中闭包的一般形式 { (参数) ->返回值类型 in   闭包内容  }  2 参数类型  闭包中的参数可以是 inout类型的,可以使用可变参数(…),元组可以被作为参数和返回值类型  但不可以有默认值  3 从上下文中进行类型推断  当block被作为参数传递到函数或者是方法中由于类型推断参数和返回值类型 可以 省去...

2018-11-13 11:11:59 73

原创 函数

1 函数返回值可以是元组,返回多个不同类型的值  2 函数参数标签 一般情况下每一个函数参数都有一个函数名称和函数标签 1.函数标签(label)在函数被调用时候使用 函数名称(name)在函数体内部使用 2.默认情况下 参数名称被作为参数函数参数的标签 3.可以给参数指定参数标签 4.可以给参数忽略参数标签(_) 5.如果给一个参数设置了参数标签,在调用时候必...

2018-11-13 11:10:36 72

原创 控制流

1 for in 和c用法一致特殊:for tickMark in stride(from: 0, to: 12, by: Interval) {       print(tickMark)}for tickMark in stride(from: 0, through: 12, by: Interval) {       print(tickMark)}...

2018-11-13 11:08:22 60

原创 集合类型 数组 字典 集合

数组1 数组字面量let shopList = ["apple","orange”]2 创建数组方式1        var array:Array<Int> = Array()3 创建数组方式2 文档推荐使用        var shordhandArray = [Int]()4 如果在上下文中数组已经知道类型 可以直接使用  [] 创建      ...

2018-11-13 11:06:57 266

原创 字符串与字符

字符 let exclamationMark: Character = “!"   字符串 1 初始化空字符串var initString  = “"var initString2 = String() 2 判断字符串是否为空方法 if initString.isEmpty {       print("字符串为空")} ...

2018-11-13 11:06:23 82

原创 运算符

1 赋值运算符  赋值运算(a = b),表示用b的值来初始化或更新a的值  如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量 let (x, y) = (1, 2)  与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值 2  算数运算符Swift 默认情况下不允许在数值运算中出现溢出情况 3 空合运...

2018-11-13 11:05:46 96

原创 错误处理

如果某些函数在运行期可能会出现错误,可以使用错误处理机制 1.func canThrowAnError() throws { }func arrayElementForIndex(array:Array<Int>,index:Int)throws ->Int {    return array.index(before: index)} d...

2018-11-13 11:05:02 57

原创 swift基础类型

 1.数值类型 Int,Float 表示  //数值型字面量//整数字面量   使用十进制 二进制 八进制 十六进制 表示同一个数 let decimalInteger = 17 let binaryInteger = 0b10001 let octalInteger = 0o21 let hexadecimalInteger = 0x11 //...

2018-11-13 11:03:58 90

原创 学习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 55

原创 OC内存管理的一些研究

1.内存分配 静态区 栈区 堆区静态区: 1.代码区 2.初始化区 (初始化的全局变量和静态变量)3.未初始化区(未初始化的全局变量和静态变量) 栈区:由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,线程之间栈控件是不共享的。优点是快速高效,缺点时有限制,数据不灵活。栈区地址从高到低分配;[先进后出] 堆区:比较灵活,动态分配和释放,堆中的对象都是以指针来访问的,指...

2018-11-12 17:23:49 155

转载 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 226

原创 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 148

原创 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 195

原创 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 163

原创 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 161

原创 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 319

原创 Runloop 机制

1.什么是runLoop    :一般来讲,一个线程一次只能执行一个任务执行完之后线程就会退出,runloop保障线程随时处理事件但不退出 ,RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数,线程执行了这个函数后,就会一直处于这个函数内部 "接受消息->等待->处理" 的循环中,直到这个循环结束(比如传入 quit 的消息),函数返回。...

2018-11-12 16:51:15 209

原创 OC的消息发送以及转发机制

SEL:Objective-C在编译时,会依据每一个方法的名字、参数序列,生成一个唯一的整型标识(Int类型的地址),这个标识就是SEL.本质上,SEL只是一个指向方法的指针.Method:Method = SEL + IMP + method_types,相当于在SEL和IMP之间建立了一个映射IMP:实际上是一个函数指针,指向方法实现的首地址    一、OC的消息机...

2018-11-12 16:49:09 836

原创 Promise相关问题

1.promisepromise已一种简洁的方式实现异步回调以及关联多个异步的调用先后顺序。promise对象有三个状态,正在执行中,已结束,以及出错状态。2.promise使用2.1 实现AJAX异步回调function MKBaseService() { this.method = HttpMethod.get; this.ServerAddress = ...

2018-11-12 16:44:05 281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除