Category初见
来源:互联网 发布:韦德生涯场均数据 编辑:程序博客网 时间:2024/09/21 06:18
1.使用场景
1). 可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处,a)可以减少单个文件的体积
b)可以把不同的功能组织到不同的category里 c)可以由多个开发者共同完成一个类 d)可以按需加载想要的category 等等。
声明私有方法
2). 列表内容
3). 模拟多继承
4).把framework的私有方法公开
2.category和extension
1). extension在编译期决议,它就是类的一部分,在编译期和头文件里的@interface以及实现文件里的@implement一起形成一个完整的类,它伴随类的产生而产生,亦随之一起消亡。extension一般用来隐藏类的私有信息,你必须有一个类的源码才能为一个类添加extension,所以你无法为系统的类比如NSString添加extension。
2).category则完全不一样,它是在运行期决议的,extension可以添加实例变量,而category是无法添加实例变量的(因为在运行期,对象的内存布局已经确定,如果添加实例变量就会破坏类的内部布局,这对编译型语言来说是灾难性的)。
补充:
1).@property, 这是iOS6以后出来的关键词. 用它声明一个属性之后, 编译器会自动给你生成setter和getter方法的声明以及实现还有一个以_xxx 的成员变量(xxx是你属性定义的变量名字)
在声明property属性后,有2种实现选择
2).@synthesize (Xcode6以后省略这个了, 默认在 @implementation .m中添加这个@synthesize xxx = _xxx; )
编译器期间,让编译器自动生成getter/setter方法。
当有自定义的存或取方法时,自定义会屏蔽自动生成该方法
3).@dynamic (Xcode6以后省略这个了, 默认在 @implementation .m中添加这个@synthesize xxx; )
告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告
然后由自己实现存取方法或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性;分类的时候也可以使用。
参考链接:http://tech.meituan.com/DiveIntoCategory.html
- Category初见
- 初见
- 初见
- 初见
- 初见
- 初见
- Category
- Category
- Category
- category
- <category>
- category
- category
- @Category
- Category
- Category
- Category
- Category
- 什么是md5
- commitAllowingStateLoss()
- 纯css实现图片翻转效果
- JDP
- 欢迎使用CSDN-markdown编辑器
- Category初见
- Google advances AI with ‘one model to learn them all
- 侧滑栏的右上角图标修改
- 172 Factorial Trailing Zeroes
- 第八届河南省程序设计大赛 D.引水工程【最小生成树相关】
- codefroces 601A 题意唬人的最短路
- [LeetCode]Reconstruct Itinerary
- Owncloud
- Ajax发起GET请求的乱码问题