博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective C 总结(五):扩展现有类 - 类别
阅读量:4705 次
发布时间:2019-06-10

本文共 867 字,大约阅读时间需要 2 分钟。

类别类似于C#中的扩展方法,是对现在类进行行为的扩展,它不能进行数据扩展,也就是不能定义字段和属性;

定义:

#import "XYZPerson.h" @interface XYZPerson (XYZPersonNameDisplayAdditions)- (NSString *)lastNameFirstNameString;@end

实现:

#import "XYZPerson+XYZPersonNameDisplayAdditions.h" @implementation XYZPerson (XYZPersonNameDisplayAdditions)- (NSString *)lastNameFirstNameString {    return [NSString stringWithFormat:@"%@, %@", self.lastName, self.firstName];}@end

然后可以像实例方法一样使用

类别的局限

  1. 无法扩展数据
  2. 与原类方法名称冲突,类别具有更高的优先级

类别的作用

  1. 将类的实现分散到多个文件及多个框架中
  2. 创建对私有方法的前向引用,(非正式协议,现在基本都用正式协议了)
    objective-c中没有真正的私有方法,只要知道某个对象有某个方法,就可以向这个对象发送这个消息。
    一般定义私有方法的方法是:在@implementation中实现在@interface中未声明的方法,但这样编译器会发出警告或错误,这个时候,我们可以定义一个私类别,在类别中声明这个方法,这样编译器就不会发出警告了。
    #import "FirstClass.h"#import "FirstClass+Extended.h"@implementation FirstClass- (void) privateMethod{    NSLog("Private Method");}@end

     

转载于:https://www.cnblogs.com/iprogrammer/p/3246017.html

你可能感兴趣的文章
监听SD卡状态
查看>>
serialVersionUID的作用
查看>>
(14)嵌入式软件开发工程师技能要求总结
查看>>
[hackerrank]Closest Number
查看>>
[Android] TabLayout设置下划线(Indicator)宽度
查看>>
netty接收大文件的方法
查看>>
软件工程设计之四则运算
查看>>
SpringMVC @ResponseBody 406
查看>>
Partial Tree UVALive - 7190(完全背包)
查看>>
Ubuntu安装搜狗拼音教程
查看>>
Happy Number
查看>>
Sqlserver 系统视图简单说明
查看>>
vue中ESlint报错
查看>>
NetCore2.0 RozarPage自动生成增删改查
查看>>
0816 1459 json & pickle ,目录导入,目录规范
查看>>
Servlet 生命周期
查看>>
HDU 1398
查看>>
(转)Linux-HA实战(1)— Heartbeat安装
查看>>
如何恢复oracle中已删除的表
查看>>
双向BFS(转)
查看>>