随笔分类 - 面试相关
摘要:锁 是什么意思? 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只有一个线程访问这一块资源,锁 应运而生。 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只
阅读全文
摘要:MVC 通过代理或者通知传递数据。 MVP 通过P绑定model和view解耦。 MVVM 通过V绑定VM(监听VM属性的变化、方法传递(改变自身被监听属性)) VM绑定model设置自身属性。
阅读全文
摘要:1.Runtime的消息转发机制 消息转发机制基本上分为三个步骤: 1. 动态方法解析 2. 备用接收者 3. 完整转发 2.Runloop的工作原理 runloop、autorelease pool以及线程之间的关系。 每个线程(包含主线程)都有一个Runloop。对于每一个Runloop,系统会
阅读全文
摘要:消息转发是一种功能强大的技术,可以大大增加Objective-C的表现力。什么是消息转发?简而言之,它允许未知的消息被困住并作出反应。换句话说,无论何时发送未知消息,它都会以一个很好的包发送到您的代码中,此时您可以随心所欲地执行任何操作。 为什么它被称为 “转发”? 当某个对象没有任何响应某个
阅读全文
摘要://创建数据库版本表 if (![db tableExists:@"tb_dbInfo"]) { result = [db executeUpdate:@"CREATE TABLE tb_dbInfo(version TEXT)"]; } #pragma mark 更新版本号 + (BOOL)update...
阅读全文
摘要:+(NSString*)getCacheSize { NSDate* begin = [NSDate date]; NSFileManager* fm = [NSFileManager defaultManager]; __block NSError* error = nil; __block NSUInteger fileSize...
阅读全文
摘要:基础: 1、如何令自己所写的对象具有拷贝功能? 若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying与 NSMutableCopying协议。 具体步骤: 需声明该类遵从 NSCopying 协议 实现
阅读全文
摘要:问题 weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的? 答案 在 Friday QA 上,有一期专门介绍 weak 的实现原理。https://mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references
阅读全文
摘要:问题 有没有这样一个需求场景,block 会产生循环引用,但是业务又需要你不能使用 weak self? 如果有,请举一个例子并且解释这种情况下如何解决循环引用问题。 答案 需要不使用 weak self 的场景是:你需要构造一个循环引用,以便保证引用双方都存在。比如你有一个后台的任务,希望任务执行
阅读全文
摘要:问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:为什么 block 里面还需要写一个 strong self,如果不写会怎么样? 答案 在 block 中先写一个 s
阅读全文
摘要:问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:什么时候在 block 里面用 self,不需要使用 weak self? 答案 当 block 本身不被 self 持有,而被别的对象持有,同时
阅读全文
摘要:题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。 分析:这其实是数据结构里面的找最近公共祖先的问题。 一个 UIViewController 中的所有 view 之间的关系其实可以看成一颗树,UIViewController 的 view 变量是这颗树的根节点,其
阅读全文
摘要:一、iOS学习路线图 二、iOS学习路线图——视频篇 C语言进阶 基本运算与进制、基本算法、数组与指针、枚举、宏定义 市场价值: 8000-10000 市场价值: 10000 - 12000 网络 网络基本原理、异步请求、TCP和UDP、Http与Https、Socket通信、Xml与Json、SA
阅读全文
摘要:iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过。只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准确性),还需要了解其中所隐藏的算法知识。 在项目当中使用集合类几乎是不可避免的,集合类的使用场景其实
阅读全文
摘要:权限分类 联网权限 相册权限 相机、麦克风权限 定位权限 推送权限 通讯录权限 日历、备忘录权限 联网权限 相册权限 相机、麦克风权限 定位权限 推送权限 通讯录权限 日历、备忘录权限 联网权限 引入头文件 @import CoreTelephony; 应用启动后,检测应用中是否有联网权限 1 2
阅读全文
摘要:Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用。但是两个方法的不同点会导致应用层面上性能的显著差异。 一、+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一
阅读全文
摘要:方案一:UIEdgeInsets 适用场景: 适合APP的TabBarItemImage的图片资源放在本地 图片超出tabbar的高度,需移动其位置,来进行适应 适合APP的TabBarItemImage的图片资源放在本地 图片超出tabbar的高度,需移动其位置,来进行适应 弊端: 若在本地配置好
阅读全文
摘要:在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区 栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点时有限制,数据不灵活。[先进后出] 栈空间分静态分配 和动
阅读全文