OC 中 类目、延展和协议】的更多相关文章

Category : 也叫分类,类目. *是 为没有源代码的类 扩充功能 *扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承 *该方法只能扩充方法,不能扩充实例变量 *添加的类目是一对 .h .m 文件,文件名为 原有类名 + 分类名 Extension :延展 *为能够获得源代码的类添加私有的实例变量和方法 *注意:延展操作的类是能够获得源代码的类(具有 .m 文件的类) *通过延展定义的方法属于私有方法,外界是没有访问权限的,只能在当前类的 .m 文件中访问…
OC分类(类目/类别) 和 类扩展 - 全解析   具体见: oschina -> MyDemo -> 011.FoundationLog-OC分类剖析 http://blog.csdn.net/u013378438/article/details/44491703     关于OC分类,非常重要的知识点:   >>分类能够对实例方法,类方法进行扩展,但不能够添加类的属性及实例变量. >>分类能够像类本身一样,调用self来访问类的方法,属性. 但对于通过新建.h与.m…
  NSDateFormatter 指定⽇日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; ⽇日期转化为字符串: NSDateFormatter*formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyy…
一.类别(category) 类别(category)——通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法.(类别,接口部分的定义,通常该文件命名为已有"类+类别名.h") 我们知道,如果一个函数在.h文件中无声明而在.m文件中定义它的实现,那么该方法就是私有方法,只能在本类的文件中使用.  若我们在类别的接口部分声明这个方法,那么我们就可以实现对该私有方法的访问. 二.扩展(extension) 扩展(extens…
类别(category)--通过使用类别,我们能够动态地为现有的类加入新方法.并且能够将类定义模块化地分不到多个相关文件里.通常仅仅在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有"类+类别名.h" @interface 已有类 (类别名) //.......方法实现 @end 比如.考虑为NSNumber添加一个类别,则接口部分代码例如以下 #import <Foundation/Foundation.h> @interface NSNumber (code…
类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法中,会成为原始类的一部分,与其他方法的调用没有区别 2.通过给父类定义类目方法,其子类也会继承这些方法.如果子类添加类目方法,父类则不会拥有子类的类目方法. 类目方法的应用: 对现有类的扩展:在类目中增加的方法会被子类所继承,而且运行时跟其他的方法没有区别 作为子类的替代手段:不需要定义和使用一个子…
只有继承和协议需要引IMPORT "头文件"; 必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; }…
Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词的时候,有种感觉这是不是学习的坎?这东西难不难?能不能学会?经过本人亲自验证,这三个东西理解起来还是蛮简单的,学过C++或者Java的小伙伴对比理解还是蛮轻松的.类目(Category)就是给已有的类扩充相应的方法,扩充的方法是公有的,类目还可以起到分模块的功能,下面会详细说到. 延展(Extens…
协议 协议只有方法的声明(类似于其他编程语言的接口)   协议相当于大家都所遵循的 关键字 @protocol 协议名 <所遵循的协议> 默认NSObject   @end     @protocollamcoProtocol <NSObject>@required //必须实现的方法 -(void)study; @optional //可实现可不实现的方法 -(void)work; @end   student.h文件 #import<Foundation/Foundati…
1.类目 类目就是为已存在的类添加新的方法.但是不能添加实例变量.比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现. @interface NSMutableArray (Sort) //为NSMutableArray类添加Sort方法,Sort就是类目名,做到见名知意-(void)invert;//方法@end 实现部分 #import "NSMutableArray+Sort.h"@implementation NSMutableArray (Sort)…