Object-C開發的時候有的時候會用到Category類,類似于Java和C#中擴充類,就是如果你覺得如果你覺得常用的方法在String中沒有,可以根據業務需求和個人喜好寫一個擴充類,然後在其中補充自己的方法,如果單純的擴充已有類型來看基本上是一樣的。OC還有可以對已經存在類通過Category進行擴充,這個特點又和C#中的partial class有的類似,先來看下是如何操作的吧:

建立的時候選擇Object-C File:
選擇類型為Category,第一個是是Categroy名稱,第三個類選擇可以是知己建立的類,也可以是系統本身的類,本次選的個人建立的:
這個時候生成檔案如下:
寫了幾行代碼,Book+FlyElephant.h代碼:
1
2
3
4
5
6
7
<code>#import "Book.h"</code>
<code>@interface</code> <code>Book (FlyElephant)</code>
<code>- (</code><code>void</code><code>)detialMore:(</code><code>NSString</code><code>*)author;</code>
<code>@end</code>
Book+FlyElephant.m中的代碼:
8
9
10
<code>#import "Book+FlyElephant.h"</code>
<code>@implementation</code> <code>Book (FlyElephant)</code>
<code>- (</code><code>void</code><code>)detialMore:(</code><code>NSString</code><code>*)author</code>
<code>{</code>
<code> </code><code>NSLog</code><code>(@</code><code>"分類中可以擷取更多的詳細資訊%@"</code><code>,author);</code>
<code>}</code>
具體調用代碼:
<code>Book *book=[Book </code><code>new</code><code>];</code>
<code> </code><code>[book detialMore:@</code><code>"keso"</code><code>];</code>
以上的實作比較簡單,上面有一個關于NSString的Categroy類的,跟Book建立差不多,實作了一個方法就是如果字元串超過一定的長度,傳回特定值:
NSString+StrExtend.h中的代碼:
<code>#import <Foundation/Foundation.h></code>
<code>@interface</code> <code>NSString</code> <code>(StrExtend)</code>
<code>+(</code><code>NSString</code> <code>*)subStr:(</code><code>NSString</code> <code>*)originalStr;</code>
<code>- (</code><code>NSString</code> <code>*)subStr2;</code>
NSString+StrExtend.m中的代碼:
11
12
13
14
<code>#import "NSString+StrExtend.h"</code>
<code>@implementation</code> <code>NSString</code> <code>(StrExtend)</code>
<code>+ (</code><code>NSString</code> <code>*)subStr:(</code><code>NSString</code> <code>*)originalStr</code>
<code> </code><code>return</code> <code>[originalStr length]<10?@</code><code>"長度不夠,請重新輸入"</code><code>:[originalStr substringWithRange:(</code><code>NSMakeRange</code><code>(0, 10))];</code>
<code>- (</code><code>NSString</code> <code>*)subStr2</code>
<code> </code><code>return</code> <code>self</code><code>.length<10?@</code><code>"長度不夠,請重新輸入"</code><code>:[</code><code>self</code> <code>substringWithRange:(</code><code>NSMakeRange</code><code>(0, 10))];</code>
具體的調用:
<code>NSLog</code><code>(@</code><code>"%@"</code><code>,[</code><code>NSString</code> <code>subStr:@</code><code>"氣若蘭兮長不改,心若蘭兮終不移"</code><code>]);</code>
<code> </code><code>NSString</code> <code>*str=[@</code><code>"氣若蘭兮長不改,心若蘭兮終不移"</code> <code>subStr2];</code>
<code> </code><code>NSLog</code><code>(@</code><code>"%@"</code><code>,str);</code>
第一個是靜态方法也就是類方法調用需要NSString調用,第二個是動态方法也就是對象方法,調用稍微簡單點,其他的應該都很容易了解~如有不當,多多指正~
本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/4215696.html,如需轉載請自行聯系原作者