码迷,mamicode.com
首页 > 其他好文 > 详细

OC-类别

时间:2015-09-25 18:35:56      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

from : http://www.cnblogs.com/wendingding/p/3709569.html

Category,有人译作类别,或分类。其作用是在不改变原来的类内容的基础上,为类增加一些方法。

添加一个分类:

技术分享

技术分享

技术分享

Person+Boy便是所创建的分类。

在分类中添加一个方法

技术分享
//
//  Person+Boy.h
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import "Person.h"

@interface Person (Boy)

-(void)playWithMe;

@end
Person+Boy.h
技术分享
//
//  Person+Boy.m
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import "Person+Boy.h"

@implementation Person (Boy)

-(void)playWithMe{
    NSLog(@"Play With Me !");
}

@end
Person+Boy.m

测试程序

技术分享
//
//  main.m
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"
#import "Person+Boy.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Person *person = [Person new];
        [person playWithMe];
        
    }
    return 0;
}
测试程序

输出结果

技术分享

分类的使用注意

(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量

(2)在分类方法的实现中可以访问原来类中的成员变量;

(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告)

(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;

(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。

(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。

OC-类别

标签:

原文地址:http://www.cnblogs.com/liuchanghong/p/4838866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!