标签:
使用类别可以扩展类的功能,不管该类的源码是否存在都可以扩展,和继承的最大不同就是类别中的方法可以访问被扩展类的私有元素。
#import "Person.h"
@interface Person(PersonLife)
@end
@implementation Person(PersonLife)
@end
使用的时候导入 #import "Person+PersonLife"
#import "Person+PersonLife.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *p = [[Person alloc] init];
}
return 0;
}
类扩展是一种特殊的类别,在声明的时候Person() ,括号里不要写名字。
#import <Foundation/Foundation.h>
// Person 类
@interface Person : NSObject
// Person 类公开的方法
-(void) print ;
@end
// 引入原类
#import "Person.h"
// 扩展,扩展中定义私有元素
@interface Person ()
// 私有属性
@property NSString *name ;
// 私有方法
-(void) privateMethod ;
@end
#import "PersonPrivate.h"
@implementation Person
// 生成私有getter、setter 方法
@synthesize name ;
// 实现公开方法
-(void) print{
[self privateMethod];
}
// 实现私有方法
-(void) privateMethod{
NSLog(@"private Method Execute ~~") ;
}
@end
// 引入Person 类
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *p = [[Person alloc] init];
// 调用类公开的方法
[p print] ;
// p.name ; 报错
// [p privateMethod] ; 报错,name的getter、setter方法和privateMethod都是私有元素,外部无法调用
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/mrwu/p/4331156.html