天天看點

Objective-C-Category類别

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

Objective-C-Category類别

建立的時候選擇Object-C File:

Objective-C-Category類别

選擇類型為Category,第一個是是Categroy名稱,第三個類選擇可以是知己建立的類,也可以是系統本身的類,本次選的個人建立的:

Objective-C-Category類别

這個時候生成檔案如下:

Objective-C-Category類别

寫了幾行代碼,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 &lt;Foundation/Foundation.h&gt;</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]&lt;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&lt;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,如需轉載請自行聯系原作者