標籤:
其實質是對一個類的擴充,對類擴充的方法有兩種:
(1)通過繼承(經常用到)
(2)通過分類
一個已知類Name
其標頭檔Name.h
#import <Foundation/Foundation.h>
@interface Name : NSObject
@property(strong,nonatomic)NSString* nameStr;
-(Name *)init:(NSString*)nameString;
-(void)nameValue;
@end
其實現檔案 Name.m
#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
關於 iOS 分類(Category)的實現代碼