关于关于分类(category)和类的扩展(extensions)的验证:
分类的一大特性就是可以 :将类的实现分散到多个不同文件或多个不同框架中。分类允许分开编译,也就是说,同一个类也可以进行多人的分工合作;
那如何才能实现分工合作呢?下面做一下验证:例子来自《iOS5开发基础教程》第8章(也就是《iOS5开发基础教程》最新版的“08 - Sections2”下载地址:http://vdisk.weibo.com/s/hBHg6)
对该实例就行如下修改:
Ctrl+N新建:
// NSDictionary-MutableDeepCopy.h
#import <Foundation/Foundation.h>
@interface NSDictionary(MutableDeepCopy)
-(NSMutableDictionary *)mutableDeepCopy:(id)dic;
@end
// BIDTableViewViewController.m
#import "BIDTableViewViewController.h"
#import "NSDictionary-MutableDeepCopy.h"
@interface BIDTableViewViewController ()
{
NSInteger *abc;
}
-(NSInteger)sum:(NSInteger)number;
@end
@implementation BIDTableViewViewController
@synthesize search;
@synthesize table;
@synthesize staticDictionary;
@synthesize keyOfSearched;
@synthesize namesOfSearched;
//@synthesize namesOfSearched;
- (NSMutableDictionary *)mutableDeepCopy:(id)dic {
NSMutableDictionary *returnDict = [NSMutableDictionary dictionaryWithCapacity:[dic count]];
NSArray *keys = [dic allKeys];
for (id key in keys) {
id oneValue = [dic valueForKey:key];
id oneCopy = nil;
if ([oneValue respondsToSelector:@selector(mutableDeepCopy)])
oneCopy = [oneValue mutableDeepCopy:oneValue];
else if ([oneValue respondsToSelector:@selector(mutableCopy)])
oneCopy = [oneValue mutableCopy];
if (oneCopy == nil)
oneCopy = [oneValue copy];
[returnDict setValue:oneCopy forKey:key];
}
return returnDict;
}
-(NSInteger)sum:(NSInteger)number {
return(number+5);
}
表视图运行正常,并且输出5,
中间的例子就体现了分类与扩展的思想,用到了两种分类的方法:.m文件声明与实现(extension),也就是sum:方法;以及单独新建.h声明方法,将category方法分散到不同的.m文件(此实例中只用到一个.m文件)调用实现。
实例完整工程下载地址:Hi,推荐文件给你 "tableViewTest.zip" http://vdisk.weibo.com/s/if_0R