category,extension区别】的更多相关文章

extension是在编译的时候就决定了的,跟普通的头文件是一样的,所以可以添加属性.实例变量.方法.并且添加extension的前提是你有这个类的源代码. category是在程序运行的时候才决定的,程序运行时才会把category中定义的方法加到类对象中.给类添加category时不需要有源码.当category中定义了原来类中已经有的方法的时候,category中的方法会覆盖原有类中的方法,当有多个category都定义了相同的方法时,最终被调用的方法由文件的编译顺序决定(由实验得出结论)…
说明: 方法,属性或变量:   类别只能添加方法,不能添加属性(理论上,但可以通过runtime的关联添加). 扩展可以添加方法和实例变量或属性,实例变量默认@private类型.扩展是类别的一个特例,是类别的一个“匿名分类”. 方法只声明没有实现,报警: 类别编译器不会报警:类别在运行时添加到类中. 扩展编译器会报警:扩展在编译阶段添加到类中. 背景: 在大型项目,企业级开发中多人同时维护同一个类,这样势必会导致当前类随着项目开展,变得臃肿,iOS中的分类(Category)就很好的解决了这个…
转:http://blog.csdn.net/wangeen/article/details/16989529 protocol   本质就是一系列的method的声明,他并不像class是必须的选项,根据自己的设计模式来选择性的使用. protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 Objective-C单继承的缺陷,协议并不是一个真正的类,…
1 category 分类,只能添加方法,添加的方法成为原来类的一部分,达到扩展类的目的,可以被子类继承 主要给没有源代码的类 添加方法,团队合作项目互不影响,不该动原有类的基础上添加方法 self 谁调用 self就是谁  灵活运用self  省去很多参数 NSString *str4 = @"vayydy"; NSString *str5 = [str4 getStringOneWord]; NSLog(@"%@" , str5); - (NSString *)…
Runloop & KVO runloop app如何接收到触摸事件的 为什么只有主线程的runloop是开启的 为什么只在主线程刷新UI PerformSelector和runloop的关系 如何使线程保活 KVO 实现原理 如何手动关闭kvo 通过KVC修改属性会触发KVO么 哪些情况下使用kvo会崩溃,怎么防护崩溃 kvo的优缺点 runtime相关问题 结构模型 介绍下runtime的内存模型(isa.对象.类.metaclass.结构体的存储信息等) 为什么要设计metaclass c…
1.创建一个objective-c file , 可以选择 category, extension ,protocol, empty 文件.选category 就能建立类别. category机制,它允许程序员为已有的对象添加新的方法,即便是在没有该对象的源代码的情况下.其优点是利用这个机制,程序员可以把一堆方法分门别类,分成若干组,每组方法用一个Category名字加以命名,定义在同一个文件里.这也是为什么把这个机制叫做Category的原因. 举例:#import <Foundation/F…
1. 怎么解决缓存池满的问题(cell) ios中不存在缓存池满的情况,因为通常我们ios中开发,对象都是在需要的时候才会创建,有种常用的说话叫做懒加载,还有在UITableView中一般只会创建刚开始出现在屏幕中的cell,之后都是从缓存池里取,不会在创建新对象.缓存池里最多也就一两个对象,缓存池满的这种情况一般在开发java中比较常见,java中一般把最近最少使用的对象先释放. 2. CAAnimation的层级结构 3. UIButton与UITableView的层级结构 1> 继承结构…
  NSDateFormatter 指定⽇日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; ⽇日期转化为字符串: NSDateFormatter*formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyy…
一.?和! 1.可选类型: ? 在swift中,可选类型(?)其根源是一个枚举型,里面有None和Some两种类型.其实所谓的nil就是Optional.None, 非nil就是Optional.Some. ! 代表强制解包 // MARK: - ?和! // ?代表可选类型,实际上的值是枚举类型 -- None和Some,其实nil值相当于Optional.None,非nil就是Optional.Some // !代表强制解包 // 定义一个Int类型的可选类型变量 var num : Int…
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显,还望大神见谅,重在总结,交流与分享...-_-! 文章主要宗旨如下: 1:ios开发中常见技术的总结(主要是区别) 2:作为一个iOS程序员必备的常识问题 3:作为面试必备的一份宝典 4:初学者快速了解相关技术 5:老程序员快速回顾混淆,忘记的知识点 后续我也会一直讲本文更新下去,有遗漏点或者错误的…