OC重新开始(十)分类category

分类

由于现在我们都是在@implementation和@end之间实现类的方法,就会使得类的方法多而且不方便查看使用,于是我们可以将方法的实现分散到不同的模块中。即实现某个类的部分方法的模块叫做范畴类别(category)。

分类的声明

@interface 类名(范畴名)
/*声明的方法*/
@end

范畴的接口部分必须引用主文件的的接口文件
在Xcode中声明
在这里插入图片描述
在这里插入图片描述
再选择放置的文件夹
在这里插入图片描述
创建结束

分类的实现

@implementation 类名(分类名)
/*方法的定义*/
@end
  • 范畴的实现部分必须引用对应的接口文件
  • 使用范畴中的方法时必须引用这个方法在的头文件

局部分类的定义

通过在一个文件内定义方法+方法的实现

@interface (类名)范畴名可随意定义
- (int)methodA;
- (void)methodB;
@end

@implementation (类名)范畴名
- (int)methodA{
	return 1;
}
- (void)methodB{
	...
}
@end

即刻在局部范围内使用方法

类的私有方法

在范畴声明之后,需要考虑如何划分共有私有方法。

可以通过创建对外不公开的接口文件,其中声明类的共有变量和方法。

类扩展

由于把类划分成了多个范畴来实现,主类和各个范畴都是独立的,各个范畴都不清楚,但是会出翔个别时候忘记讲范畴链接进去的时候,这个时候就要类扩展了。

@interface 类名()
@end

声明时候只是圆括号没有别的,在声明类扩展的时候可以,增加实例变量

属性声明

在范畴的接口中可以包含属性声明,但是在实现部分中不能包含@synthesize,范畴接口定义之后,要在实现部分手动定义访问方法,可以防止随意访问同一个类的不同文件中定义的实例变量。

新方法的覆盖

新定义的范畴中如果有和原方法重名的话,新定义的方法会覆盖老方法。也能给已有的类追加新的范畴NSString+Compare。

对象的可变性

OC中对象分为可变类和不可变类,他们的实例分别为可变实例和不可变实例

种类不可变类可变类
数组NSArrayNSMutableArray
数据NSDataNSMutableData
词典NSDictionaryNSMutableDictionary
集合NSSetNSMutableSet
字符串NSStringNSMutableString
带属性的字符串NSAttributedStringNSMutableAttributedString
字符集合NSCharacterSetNSMutableCharacterSet
索引集合NSIndexSetNSMutableIndexSet

不可变对象的概念在并行编程中很重要,因为可变对象的值可能会在不知不觉中被其他线程修改

-(id)mutableCopy

此方法为不可变对象创建一个可变的副本,通过给不可变对象发送此消息会生成一个和不可变对象内容一样的可变对象

NSString

@"hello world"

通过用"“括起来加上@来形成一串字符串,这样定义的字符串是常量对象。@”"代表一个长度为0的字符串,和nil有区别。

快速枚举

for(变量 in 集合){
	/*相应操作*/
}

通过for in 可以快速遍历所有集合中的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值