类的延展可以看作是一种匿名的类目,类有时需要一些只为自己所见,所用的私有方法这种私有方法可以通过延展的方式来声明,延展中定义的方法在类本身的@implementation代码区域中进行实现。
@interface MyObject : NSObject{
NSNumber *number;
}
- (NSNumber *)number;
@end
@interface MyObject (Setter)
- (void)setNumber:(NSNumber *)newNumber;
@end
@implementation MyObject
- (NSNumber *)number{
return number;
}
- (void)setNumber:(NSNumber *)newNumber
{
!//do something
}
@end
extension和category主要区别是:
1.形式上来看,extension是匿名的category。
2.extension里声明的方法需要在mainimplementation中实现,category不强制要求。
3.extension可以添加属性(变量),category不可以。