js-Native交互 移动开发中经常会用到网页,例如活动信息展示并响应网页中的Click事件。这个交互的过程就涉及到js与OC或Swift的相互调用,这里OC或Swift就统称为Native,即原生应用。本文总结了三种最常见的js-Native交互实现方案并附上代码。 场景:点击网页按钮,跳转到Native支付页面,在网页中显示支付结果。 一.拦截URL1.Native->jsNative调用js主要是通过str 2017-11-23 OC #web
八大锁 1.概念临界资源: 在进程层面,一次仅允许一个进程使用的资源称为临界资源,如打印机等物理设备; 在线程层面,多线程环境中一次仅允许一个线程使用的变量等就是临界资源; 临界区: 一个访问共享资源的程序代码片段就是临界区。当有线程进入临界区时,其他线程须保持等待。 锁: 是一种强行限制资源访问的同步机制,在并发控制中保证互斥的要求,用来防止多线程环境中对临界资源的脏读或者脏写。从某种角度而言,锁也 2017-11-21 OC #多线程
NSOperation iOS2 时 OS X 与 iOS 的程序都普遍采用 NSOperation 来编写线程代码,而之后出现的 GCD 技术大体是依照前者的原则来实现的。随着 GCD 的普及,在iOS4 与 OS X 10.6 以后,OperationQueue 的底层都是用 GCD 来实现的。 1.与 GCD 的对比1.1.GCD 的特点:GCD 是面向过程的,它是由 C 语言构成的 API,一般与 block 2017-11-17 OC #多线程
GCD 1.简介GCD是在线程池模式基础上开发的一套多核编程的较新的解决方案: 底层由C语言实现,API使用时简洁明了; 为多核处理器而设计,会自动利用更多的CPU内核进行运算,执行效率高; 自动管理线程生命周期,无需手写线程管理的代码,只需告诉它我们想要执行的任务。 2.同步与异步同步和异步是将任务以 block 形式提交到指定队列中时所使用的两种方式。 1dispatch_sync(dispatc 2017-11-08 OC #多线程
NSThread 1、进程 & 线程#定义与划分尺度: 程序的一次执行过程就是进程,它是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是进程内的一个执行单元,一个进程至少有一个线程。 #地址空间: 进程有自己独立的虚拟地址空间,而线程共享进程的地址空间。 #拥有的资源: 进程是资源分配和拥有的单位;同一个进程内的线程共享进程资源。 #执行单位: 线程是CPU调度和分派的基本单位 2017-11-07 OC #多线程
Runloop 1.Runloop Run loops are part of the fundamental infrastructure associated with threads.A run loop is an event processing loop that you use to schedule work and coordinate the receipt of incoming even 2017-09-09 OC #runloop
新增类及其成员 1.API To create a new class, start by calling objc_allocateClassPair. Then set the class’s attributes with functions like class_addMethod and class_addIvar. When you are done building the class, call 2017-09-01 OC #runtime
方法交换 1.方法交换Method Swizzling 作用:动态交换两个方法的实现(即IMP指针); 原理:在类的结构体中有一个methodLists,它存放着 SEL 与 IMP 的映射关系。Method Swizzling 就是对这个列表进行的操作,通过改变这种映射关系,完成两个方法IMP的交换; 使用场景: 类的原有方法无法满足新需求,需要扩展并替换。如数组新增对象时,检测对象是否为nil; 新增 2017-09-01 OC #runtime
对象关联 1.对象关联使用关联,我们可以在不修改类定义的前提下,为其对象增加存储空间。 适合的场景: 把某对象与特定对象相关联; 解决分类中属性不会自动生成getter、setter函数,调用时会闪退的问题; 1.1.创建关联1OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_Ass 2017-08-30 OC #runtime
成员变量、属性 1.成员变量Ivar在objc/runtime.h中,Ivar的描述如下: 1234567891011/// An opaque type that represents an instance variable.typedef struct objc_ivar *Ivar;struct objc_ivar {char *ivar_namechar *ivar_typeint ivar 2017-08-25 OC #runtime