------------------------------------------------------------
1.繼承
#import "要繼承的類別.h"
@interface className:要繼承的類別 {
}
說明:- 繼承用":"
- 在繼承前記得先import
2. 覆寫
-進行覆寫時,不需要增加overwrite等關鍵字,取名相同則直接進行覆寫。
3. 使用父層方法
- 要使用父層方法,與許多程式語法相同,使用super。
4. 使用自己
- 要取得自己,使用self
5. 類別初始化
- Objective-c並沒有建構函式,若是要進行初始化,可自行以一般函式的寫法來達成。
h檔定義
- (ola *)initWith:(NSString *)nameValue age:(CGFloat)ageValue;
m檔實做
- (ola *)initWith:(NSString *)nameValue age:(CGFloat)ageValue;
{
self = [super init];
if (self)
{
self.name = NameValue;
self.age = ageValue;
}
return self;
}
說明:- 實做時,先呼叫父層的init方法,若繼承於NSObject,則代表呼叫[NSObject init],成功建立實體後,塞入初始化數值,最後回傳自己。(也就是例中ola類別)
6. id動態型別
- 有時候一個Array裡面可能有多種類別,這時可以利用動態型別來承接。
if ([temp isMemberOfClass:[ola class]])
判斷temp是否為ola型別。(無多型概念)
if ([temp isKindOfClass:[ola class]])
判斷temp是否為ola型別的相關種類(有多型概念)
if ([temp respondsToSelector:@selector[initWith]])
判斷temp是否有initWith的方法7. try的使用
@try
{
}
@catch (NSException *e)
{
NSLog(@"%@,%@" , [e name], [e reason]);
}
@finally
{
//對錯都執行的部分
}
說明:- [e name]取得錯誤名稱
- [e reason]取得錯誤原因
8. 自行拋出錯誤
[NSException exceptionWithName:@"錯誤名稱" reason:@"錯誤原因" user:nil];
9. 靜態屬性
- Objective-c沒有靜態屬性,所以是以C++的語法,寫在import之後,@interface之前。
static int count;
使用時,必須要先告知編譯器要使用外部的屬性
extern int count;
count++;
10. 靜態方法
於h檔與m檔中,以+號開頭
11. 補充類別(Category)
h檔
#import "ola.h"
@interface ola (olaOps)
- (void) size;
@end
說明:- #import "ola.h":import要被補充的內容
- @interface ola (olaOps):olaOps類別名稱,ola 未被補充的類別
m檔
#import "olaOps.h"
@implementation ola(olaOps)
- (void) size
{
NSLog(@"17");
}
@end
說明:- 實際使用時,類別與補充類別都要import,Xcode才會有提示可以使用。
- 可以利用該方式,補充NSString,NSObject等基本類別。
12. 通訊協定(Protocol)
- 類似其他語言的interface的概念。
- 使用時使用大括號,多個Protocol用逗點隔開。
- 可利用@required與@optional來指定是否一定要實做。
13. 前處理(define)
- 告知編譯器要置換的文字(replace的概念)
#define ola ABCDEFG
說明:- 程式中看到ola的字樣,會先置換成ABCDEFG,編譯器才會編譯。
- 後面沒有";",中間沒有"="
-------------------------------------------------------
對沒碰過的人來說,內容真的很多。
沒有留言:
張貼留言