关于 iOS 分类(Category)的实现代码
其实质是对一个类的扩充,对类扩充的方法有两种:
(1)通过继承(经常用到)
(2)通过分类
一个已知类Name
其头文件Name.h
#import <Foundation/Foundation.h>
@interface Name : NSObject
@property(strong,nonatomic)NSString* nameStr;
-(Name *)init:(NSString*)nameString;
-(void)nameValue;
@end
#import "Name.h"
@implementation Name
-(Name *)init:(NSString*)nameString
{
Name * name = [Name new];
name.nameStr = nameString;
return name;
}
-(void)nameValue
{
NSLog(@"----%@--",self.nameStr);
}
@end
再新建一个头文件Name+change.h用来声明其所要扩充的方法
源码:
#import "Name.h"
@interface Name(change)
-(void)addNameID:(NSString *)str;
@end
再新建一个实现文件Name+change.m用来实现自己扩充的方法
#import <Foundation/Foundation.h>
#import "Name+change.h"
#import "Name.h"
@implementation Name (change)
-(void)addNameID:(NSString *)str
{
NSLog(@"---%@--%@--",self.nameStr,str);
}
@end
其测试文件选择命令行
main.m
#import <Foundation/Foundation.h>
#import "Name+change.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Name * name1 = [[Name alloc] init:@"wangfei"];
[name1 nameValue];
[name1 addNameID:@"898989"];
}
return 0;
}
其测试结果:
2015-07-11 16:34:53.051 Category[1462:60100] ----wangfei--
2015-07-11 16:34:53.053 Category[1462:60100] ---wangfei--898989--
Program ended with exit code: 0
最新文章
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
- Linux服务器搬迁记(一)
- 黑马程序员_ Objective-c 之block、protocol学习笔记
- c语言是如何实现泛型链表
- iOS使用宏写单例
- C#2.0至4.0 的一些特性
- Pyhton 操作MySQL数据库
- wpf CollectionViewSource与ListBox的折叠、分组显示,及输入关键字 Filter的筛选
- ●洛谷P1291 [SHOI2002]百事世界杯之旅
- 使用axios 的post请求下载文件,
- querySelector() 选择器语法
- S50 抓取pattern数据
- 20165314 学习基础和C语言基础调查
- PYTHON-绑定方法 反射 内置函数
- Inside The C++ Object Model(一)
- java的反射机制浅谈(转)
- Smarty标签 for运算
- LeetCode题解:(114) Flatten Binary Tree to Linked List
- 洛谷P4644 [USACO2005 Dec]Cleaning Shifts 清理牛棚 [DP,数据结构优化]
- Ubuntu 设置为固定ip