Objective-C 入门(六)category 分类

来源:未知 责任编辑:智问网络 发表时间:2013-09-02 11:59 点击:

 

Objective-C 入门(六)category 分类

category 字面就很好理解 把你类中定义的一些方法单拿出去(为什么要拿出去呢?)

其实他的实际作用就是为写的类来扩充一些方法 这对于你的代码扩充性是一个很好的作用

category分出来的方法是不一定要全部实现的 你可以先定义出来 在你需要的时候来补充它就可以了

 

如何实现category呢

两种方法

一: 在你原有的.h头文件中 直接加入category

 例如源代码 :

 # import <Foundation/Foundation.h>

 @interface Preson:NSObject{

int _age;

NSString * _name;

 }

 @propert (nonatomic,assign)int age;

 @propert (nonatomic,retain)NSString*name;

 -(void)say;

 @end;

加入category 之后.h:

 

 # import <Foundation/Foundation.h>

 @interface SKPerson(自定义一个名字)//-----此处为category 需要加个小括号

 -(void)go;

 @ end

 

 @interface SKPerson:NSObject{

int _age;

NSString * _name;

 }

 @propert (nonatomic,assign)int age;

 @propert (nonatomic,retain)NSString*name;

 -(void)say;

 @end;

 

.m文件为:

    

#improt "SKPerson.h"

@implementation SKPerson(自定义一个名字)

-(void)go{

 NSLog(@"This is SKPerson category")

}

    @end;

 @implementation SKPerson

syncthsize age=_age;

syncthsize name=_name;

-(void)say{

 NSLog(@"This is SKPerson")

}

    @end;

 

二: 新建一个类 选择.category 文件 命名通用方法 SKPerson+自定义一个名字 //---------注意有个"+"号

这里就可以直接写新的方法了

 

.h文件为:

 #improt "SKPerson.h"

 @interface SKPerson(自定义一个名字)

   -(void)go; 

 @end

.m文件为:

 #improt "SKPerson(自定义一个名字)"

 @implementation SKPerson(自定义一个名字)

 -(void)go{

 NSLog(@"This is SKPerson category")

}

 @end

 

使用 category 要注意以下几点

1 可以访问原类中的方法属性

2 可以覆盖原类中的方法

3 只能增加消息 不能改变实例变量

 

                          ---------本博文针对有JAVA基础 OC还属于初学者 文中有错误的地方还请指出

 

 

 

 

本文出自 “美丽的奇葩” 博客,请务必保留此出处http://skyoceanone.blog.51cto.com/3483859/696278

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1