隐私政策:
本应用不会收集任何用户个人信息,请放心使用。
另外在未征得您事先许可的情况下,本应用不会将获取到的设备信息对外披露或向第三方提供。
本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。
本隐私权政策属于本应用服务使用协议不可分割的一部分。
隐私政策:
本应用不会收集任何用户个人信息,请放心使用。
另外在未征得您事先许可的情况下,本应用不会将获取到的设备信息对外披露或向第三方提供。
本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。
本隐私权政策属于本应用服务使用协议不可分割的一部分。
MapKit是iOS自带的地图库。可以实现定位,地理编码,地图标注等功能。
Read More...YYCache 源码解析
YYCache是国内开发者ibireme开源的一个线程安全的高性能缓存组件,代码风格简洁清晰,在GitHub上已经有了1600+颗星。
阅读它的源码有助于建立比较完整的缓存设计的思路,同时也能巩固一下双向链表,线程锁,数据库操作相关的知识。如果你还没有看过YYCache的源码,那么恭喜你,阅读此文会对理解YYCache的源码有比较大的帮助。
Read More...问: Category能否添加成员变量?如果可以,如何给Category添加成员变量?
答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。
使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联。
那么如果想动态的添加属性,其实就是动态的产生某种关联就好了。而想要给系统的类添加属性,只能通过分类。
这里给NSObject添加name属性,创建NSObject的分类 我们可以使用@property给分类添加属性
1 | @property(nonatomic,strong)NSString *name; |
通过探寻Category的本质我们知道,虽然在分类中可以写@property 添加属性,但是不会自动生成私有属性,也不会生成set,get方法的实现,只会生成set,get的声明,需要我们自己去实现。
Read More...
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 上接 iOS底层原理总结 - 探寻OC对象的本质
我们知道不管是类对象还是元类对象,类型都是Class,class和mete-class的底层都是objc_class结构体的指针,内存中就是结构体,本章来探寻Class的本质。
1 | Class objectClass = [NSObject class]; |
点击Class来到内部,我们可以发现
1 | typedef struct objc_class *Class; |
Class对象其实是一个指向objc_class结构体的指针。因此我们可以说类对象或元类对象在内存中其实就是objc_class结构体。
我们来到objc_class内部,可以看到这段在底层原理中经常出现的代码。
1 | struct objc_class { |
对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。
面试题:一个NSObject对象占用多少内存?
探寻OC对象的本质,我们平时编写的Objective-C代码,底层实现其实都是C\C++代码。
1.UIImage and UIImageView
2.Custom drawing with UIKit
3.Advanced CPU and GPU
4.总结
Objective-C 是一个动态语言,它需要一个运行时系统来动态的创建类和对象、进行消息传递和转发。关于Runtime的知识大家可以参看Apple开源的Runtime代码 和Rumtime编程指南 。
本文总结一些其常用的方法。
Read More...