类的扩展, 延展
2015-12-28 13:35
169 查看
//类的扩展: 为类扩展实例变量和方法 //前提: 现有一个类 //1.已经类(比如:Girl)的扩展 //a,直接修改, 可以扩展实例变量和方法 //b.Extension, 延展, 扩展"私有"实例变量和"私有"方法(只在类内部使用),方法的实现要写在原有文件的*.m中 //注: 只有是能在@interface 中写的内容吗都可以在Extension中实现, 比如: 遵守的协议, 写属性 这样话, 在Girl自己创建的类Girl中, 就只需要在.m中将Extension中的方法写到里面就可以了,因为写在.m文件中, 所有外界是看不到的(因为一般都会写在.h中, 接口部分, 用户可以看到)而这方法私有的. 只有在类的内部才能使用. 这里是@interface Girl () ; #import "Girl.h" @interface Girl () //注意: 写在下一行, 这种表示协议 //{ // NSString *_color; //} @property (nonatomic, copy)NSString <NSCopying> *color; - (void)sayHi; @end /*头文件相当于直接引进入, 推荐使用() 注意:延展一般写在#import的 下下行, 不然不会提示! //2.未知类(比如:NSString)的扩展 //a.继承, 可以扩展实例变量和方法 //缺点: 扩展的实例变量和方法只有子类才具备, 父类不能使用 //b.Category, 分类, 类目, 只能扩充方法, 不能扩充实例变量 //为NSString添加sayHi (选择OC-file, 选择,类名, 还有协议, 工程名, 并且只能扩充方法, 不能扩充实例变量) 会在文件中创建了NSString + SayHi 的文件. 再声明中出现@interfance NSString (sayHi) [NSString sayHi]; //注: Category中扩充的方法如果和原来类中的方法相同, Category中的方法具有更高的优先级 NSString *string = @"kris"; NSLog(@"%@",[NSString getFirstLetter:string]); NSLog(@"%@", [string getFirstLetter1]); NSString *string1 = @"abcdsdfwdfdsggd"; NSLog(@"%@",[string1 middleLetter]); NSLog(@"%@", [NSString middleLetter1:string1]); //还有协议:protocal, category(类目), extension(延展),protocal(协议),三者都只在OC-file 创建的.
相关文章推荐
- ssh forwarding 配置
- Python正则表达式
- Android广播机制概述
- Web开发之Cookie and Session
- ubuntu -- 不输入密码执行sudo
- Untiy逐行读取TXT中的信息
- Unity窗口化无边框模式
- selenium设置firefox profile之 不进入 firstrun页面
- SpeedyCloud云计算之旅
- R语言基本操作函数
- java中oracle语句的时间表示
- 35 个 Java 代码性能优化总结
- 我的Python成长之路---第一天---Python基础(4)---2015年12月26日(雾霾)
- CSS清除浮动的方法
- Halcon模板匹配二
- Unity获取游戏对象
- Android实现雪花飘落特效
- 近5年133个Java面试问题列表
- NOI2005 BZOJ1500 维修队列 题解&代码
- 三谈iOS抓包:HTTPS抓包