首页 > 其他 > 详细

OC与Category 分类

时间:2014-01-29 15:39:05      阅读:446      评论:0      收藏:0      [点我收藏+]

Category 分类,动态为已经存在的某个类动态添加方法,为以前的类扩展方法,但是不能添加成员变量,实现了类的相关方法的模块化,把不同的类的方法分配到不同的分类文件中,就像在Java开发中的struts或者spring配置文件模块化一样,便于分模块开发,并且可以扩展OC基础类库中的类。

#import <Foundation/Foundation.h>

@interface Student : NSObject

@property (nonatomic,assign)int age;

+(id)student;

+(id)studentWithAge:(int)age;

@end

//创建一个名为Min分类

@interface Student (Min)

-(void)min;

@end

#import "Student.h"

@implementation Student

+(id)student{

    return [[[Student alloc]init]autorelease];

}

+(id)studentWithAge:(int)age{

    //Student *stu=[Student student];

    Student *stu=[self student];  //self指向当前类

    stu.age=age;

    return stu;

}

@end

//分类实现

@implementation Student(Min)

-(void)min{

    NSLog(@"调用了min方法");

}

@end


Student+Sum.h & Student+Sum.m

#import "Student.h"

@interface Student (Sum) //代表分类 Sum是分类的名称

-(void)sum;

@end

#import "Student+Sum.h"

@implementation Student (Sum)

-(void)sum{

    NSLog(@"sum执行");

}

@end


对NSString扩展

#import <Foundation/Foundation.h>

@interface NSString (Xml)

+(void)createXml;

@end


#import "NSString+Xml.h"

@implementation NSString (Xml)

+(void)createXml{

    NSLog(@"创建了XmL文件");

}

@end


main

#import <Foundation/Foundation.h>

#import "Student.h"

#import "Student+Sum.h"  //导入分类所在的头文件

#import "NSString+Xml.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool {  

        Student *stu=[Student student];

        [stu min];

        [NSString createXml];

    }

    return 0;

}





OC与Category 分类

原文:http://blog.csdn.net/cooljune/article/details/18861059

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!