2013年1月16日 星期三

Category

這次的教學是 Catagory
先說明一下它是啥, Catagory 是一個將任一的 Class 進行擴充的功能,
主要是以補足 Class 所沒有的功能,我自己是將它與 Class Method 一起使用,
來擴充原本沒有 Class method 的內建 Class ,接下來就開始教怎麼做了。

首先開啟任一專案,之後按下⌘+N,或是 File > New > File… 新增一個檔案
新增時要選擇下面這一個,之後按下下一步,


現在就再 Catagory 欄位裡輸入你的檔名,Catagory on 的欄位是要擴充的 Class,
輸入完按下一步選擇要儲存的位置,這樣子就建好你的檔案了。


建好的檔名會像是這樣子,在+之前的要擴充的 Class 名稱,+之後的是自定的名稱


檔案建好後就開始建立要擴充的 Method 了
我就繼續使用現在的 Class 進行示範,
在原本的 UIWebView 的宣告中,都是先 initWithFrame: 建立它的大小,
之後再 loadRequest: 輸入要顯示的網址,
這樣子就需要消耗掉兩行,反而變得比較沒效率,
所以我採用了自定的 Class Mthod 的方法

UIWebView+webView.h
+ (id)webWithFrame:(CGRect)frame URL:(NSURL *)url;
- (id)initWithFrame:(CGRect)frame URL:(NSURL *)url;

因為自定了一個新的 Calss Method 就需要一個 Initial 做搭配,
雖然這並不一定,不過這是我的習慣,
接下來就實作了

UIWebView+webView.m
+ (id)webWithFrame:(CGRect)frame URL:(NSURL *)url
{
	UIWebView *webView = [[[UIWebView alloc] initWithFrame:frame URL:url] autorelease];

	return webView;
}

- (id)initWithFrame:(CGRect)frame URL:(NSURL *)url
{
	self = [super initWithFrame:frame];

	if (!self) return nil;

	[self loadRequest:[NSURLRequest requestWithURL:url]];

	return self;
}

這樣子就可以了,未來要使用 UIWebView 時就可以使用以下宣告方法,
UIWebView *webView = [UIWebView webWithFrame:CGRectMake(0, 0, 320, 480) 
										URL:[NSURL URLWithString:@"HTTP://www.google.com"]];
這樣子,就將原本的兩行變成了一行就能解決,
不過要記得使用
#import "UIWebView+webView.h"
才能使用,

這次的教學就到這邊,我再想到有啥新東西時就還會拿出來教的。