Background or Question
一般给对象的属性赋值主要有两种方式, _var=newValue 和 objc.var = newValue,大家都知道前者效率高,后者效率低
开发的过程中,引起APP奔溃的叫常见的一个场景是unrecognizedSelector,顾名思义是无法识别的方法or选择子
经常会有人问一个很宏观的问题:你是如何理解runtime的,我觉得runtime 有两个角度可以解释
一套用c实现的底层API 源码可以在apple的source library里下载
一种动态运行机制
在iOS中,程序运行时调用的方法【or 消息】并不是编译时期就确定下来...
strong和copy是property的两个基本修饰符,在oc中,一般情况下用来修饰对象。strong:property的默认修饰符。copy:一般用来修饰拥有可变类型的对象。比如NSString NSDictionary NSArray.在学习oc的过程中,大多数的资料里都提到了以上两点,却没有详细说明这么做的原因。本文旨在oc底层实现的基础上探讨以上两点的原因和合理性。
tip:对象的RC如何实现+1 和-1 请看对象的引用计数是如何管理的
一、strong和copy的不同、以及为什么NSString等对象一般用copy来修饰?对象使用strong和copy修饰后,都可以让对象的...
蓝牙:为方便接入特定协议下的设备,有必要对硬件设备进行抽象,将蓝牙通讯的过程、逻辑封装成Framework。调用者不要花时间分析芯片的协议、特性,只需要拿到Framework,调用API即可。基于以上前提,这个框架需要具备以下条件:
指令响应及时、不需要调用者进行各种判断(比如设备是否断开、设备是都需要重连、指令是否需要重发、指令发送超时)
能直接将数据封装好给调用者使用。
指令有优先级。调用者可以设定指令优先级。(如调用者将“升级指令”设为最优,则处理完此次指令之前,其他指令都在等待序列)
由于底层会将数据分成以20bytes为单位进行读取。所以客户端要对收到的数据包进行合包。合包...
1. 全局变量:
要在函数外面声明
可以跨文件访问
声明时可以赋值 默认初始值为0
储存在【全局(静态)存储区static】
extern 关键字
extern varName代表的是varName是调用外部声明的变量
2. 静态变量
可以在函数外部声明、亦可在函数外部声明
仅在声明文件内访问、不可以改变局部变量的作用域
声明时关键字为static
声明时可以赋值 默认初始值为0
储存在【全局(静态)存储区static】、只有一份内存
可以延长变量的生命周期
3. 局部变量
要在函数内部声明
运行到该函数时才会分配内存
只在声明变量的函数内部访问
一般数据类型储存在栈帧中...