摘要:
以下代码执行顺序是什么 ? - (void)action { NSLog(@"1"); dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_async(queue, ^{ NSLog(@"3"); [self perf 阅读全文
摘要:
众所周知,iOS开发中,assign和weak都是弱引用,基础数据类型我们一般都是用assign修饰,而对象一般都是用weak修饰的。那么问题来了,如果用assign修饰对象,会产生什么的后果? 在弄清之前,我们首先要了解一下内存管理机制。我们初始化一个对象如下: Objct *obc =[ [Ob 阅读全文
摘要:
目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源delegate,通过和protoco 阅读全文
摘要:
首先了解weak是一种非拥有关系,属性所指的对象销毁时,属性值会自动置为nil weak是Runtime维护了一个hash(哈希)表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是所指对象的所有weak指针的地址数组。 当对象引用 阅读全文
摘要:
atomic不是绝对的线程安全。atomic的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的 @property (atomic, assign) int intA; //线程A for (int i = 0; i < 10000; i ++) { self.intA = self 阅读全文
摘要:
总结: 三类工具 基础工具 (NSLog的方式记录运行时间.) 性能工具.检测各个部分的性能表现,找出性能瓶颈 内存工具.检查内存正确性和内存使用效率 性能工具: 可以衡量CPU的使用,时间的消耗,电池的消耗 一、Time Profile 启动Time Profile:Xcode ——> Produ 阅读全文
摘要:
一、渲染机制 CPU将计算好的需要显示的内容提交给GPU,GPU渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照Vsync(垂直脉冲)信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器进行显示。 二、GPU屏幕渲染有两种方式 离屏渲染Off-Screen Rendering 指的是GP 阅读全文
摘要:
算法思想:分而治之+Hash 1、IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理; 2、可以考虑采用分而治之的思想,按照IP地址的Hash(IP) % 1024的值,把海量IP日志分别存储到1024个小文件中,这样,每个小文件最多包含4MB个IP地址; 这样的话,通过计算IP的 阅读全文
摘要:
分类 1、原则上只能增加方法(能添加属性的的原因只是通过runtime的objc_setAssociatedObject和objc_getAssociatedObject方法添加setter/getter方法) 2、方法没被实现编译器不会有任何警告,因为分类是在运行时添加到类中 3、可以减少单个文件 阅读全文
摘要:
charles 激活码 免费生成 https://www.charles.ren/ charles--help--register即可激活 一、mac设置代理端口号 1.在 Mac 中打开 Charles 应用;Proxy--Proxy Settings 设置port 8888,OK 二、手机设置代 阅读全文