Objective-c类别
来源:互联网 发布:网络调教女m的任务详细 编辑:程序博客网 时间:2024/05/16 11:16
类别
类别要解决的问题是:为现有的类增加新行为
子类是一种办法,但是面对类簇和工具包或类库时确无能为力
类别解决了这个问题
12.1 创建类别
类别是一种为现有类提供新方法的方式
12.1.1 声明类别
@interface NSString (NumberConvenience)
-(NSNumber *) lengthAsNumber;
@end
注意几点:
1.现有类的类名位于 @interface之后
2.括号中是类别的名称(只要名称唯一,可以添加任意多的类别)
3.类别没有实例变量部分
12.1.2 实现类别
同实现类相似,实现方法即可
12.1.3 类别的局限性
1.类别不能添加新的实例变量
2.命名冲突,如果类别中方法和类中已有方法同名,则类别具有更高优先级
12.1.4 类别的作用
1.将类的实现分散到多个不同文件或多个不同框架中
2.创建私有方法的前向引用
3.向对象添加非正式协议
12.2 利用类别分散实现
利用类别可以将类的方法分散到多个源文件中
特别指出的是:类别可以访问其继承的类的实例变量
在使用一个方法时,对象的方法是在接口中声明、父类中声明、还是类别中声明并不重要
类别不仅可以分散实现到不同源文件,也可跨框架
12.3 使用类别创建前向引用
虽然可以实现未声明的方法,但是编译器会提出警告
通过类别可以提供声明,而且,声明的方法不必要一定在类别的实现中实现,也可以在类的实现中实现
12.4 非正式协议和委托类别
委托(delegage)是一种对象,另一个类的对象会要求委托对象执行它的某些操作
委托对象接受其它对象对它的特定方法的调用
其实就是委托对象必须实现别的对象调用的方法,与接口类似
12.4.1 ITunesFinder项目
12.4.2 委托和类别
委托和类别有什么关系?委托强调类别的另一种应用:被发送给委托对象的方法可以声明为一个NSObject的类别
创建一个NSObject的类别称为“创建一个非正式协议”
12.4.3
选择器只是一个方法名称,可以使用@selector()预编译指令指定选择器,其中方法名位于圆括号中,但它以OC运行时使用的特殊方式编码,以快速执行查询
NSObject提供了一个respondsToSelector的方法,询问对象以确定其是否实现某个特定消息
12.4.4 选择器的其他应用
选择器可以被传递,可以作为方法参数,甚至可以作为实例变量存储
- Objective-c类别
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Objective-c类别
- Category 类别 -Objective-C
- Objective-C语言--类别
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Objective-C 类别使用
- Objective-C 类别小结
- 类别(objective-c基础笔记)
- Objective-c Category(类别)
- objective-c总结12-类别
- Objective-C 类别(Category)浅谈
- Objective-C 类别(Category)浅谈
- Objective-C类别(catagory)
- Objective-C类别(Category),分类
- Objective-C:类别&代理
- iOS上一种图书翻页效果的实现(Lea…
- objective-c中import与@class的说…
- ios BOKE
- Objective c 分数之间的加减乘除 …
- Objective c KVO/KVC做了简单的…
- Objective-c类别
- Objective c 数组NSArray
- 后缀数组,字符串中连续出现最多的字串
- Objective C 监听 通知
- objective c 协议 代理
- objective-c 数组转变为字符串 …
- Hibernate单向无连接表1-1关联的简单示例
- objective-c 文件
- 使用dwz一些记录