category分类,指的是可以将类无尽的拓展起方法,是不能拓展属性的。
类名后面有个括号代表这个类是分类
eg:
#import "Student.h"
@interface Student (ForStudent)
-(void)test2;
@end//这里必须用import不能用@class因为必须要指定原来的类有哪些方法,防止重名。
#import "Student+ForStudent.h"
@implementation Student (ForStudent)
-(void)test2{
NSLog(@"%d",self.age);
}
@end
当然分类也可以不用新建立一个文件来指定
eg:
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property(nonatomic,assign) int age;
-(void)test;
@end
@interface Student(add)//这个代表分类
-(void)test3;
@end
#import "Student.h"
@implementation Student
-(void)test{
NSLog(@"nihao,%d",_age);
}
@end
@implementation Student(add)
-(void)test3{
NSLog(@"nihaotest3,%d",_age);
}
@end
总结:分类些在一个文件中是可以访问其属性的,当不在一个文件中是不能访问其属性的