------- windows phone 7手機開發、.ios培訓、期待與您交流! -------
我們知道大部分oc關鍵字都是以@開頭的,例如,初學者最常見的幾個 @inte***ce @implementation @end 等等,但是self與super是oc中為數不多的,前面不加@的關鍵字。一般情況下,我們呼叫乙個方法,包括類方法與物件方法,都會採用這樣的格式,[方法的執行者 方法名],類方法與物件方法的區別在於,方法執行者的不同,類方法的執行者一般是類名或者說是類物件,而物件方法的執行者,一般是類型別的物件。
self的基本使用,誰呼叫了當前方法,self就代表誰,self出現在物件方法裡則代表了物件,self出現在類方法裡面則代表了類。在物件方法中,可以使用self->成員變數來訪問當前物件內部的成員變數,而[self 方法名]可以呼叫其他物件方法或者類方法。
例如:
#import@inte***ce tiger : nsobject
+ (void)eat;
+ (void)run;
@end
@implementation tiger
+ (void)eat
+ (void)run
@end
int main(void)
還有需要值得注意的是,不要在方法中再次用self呼叫自己,這樣會引發死迴圈。
例如:
#import@inte***ce fruit : nsobject
- (void)test;
@end
@implementation fruit
- (void)test
@end
int main(void)
除此之外,我們得明白,函式是不依賴物件而存在的,意思就是呼叫函式的時候,不需要用到類物件或者是類型別的物件。
例如:
#import@inte***ce fruit : nsobject
- (void)method;
@end
@implementation fruit
void new()
- (void)method
@end
int main(void)
super的作用是,直接呼叫父類中的某個方法,super處在物件方法中,那麼就會呼叫父類的物件方法,super處在類方法中,那麼就會呼叫父類的類方法。super一般使用在子類重寫父類的方法時,想保留父類的一些行為。意思就是需要有繼承,才會有super的使用。
例如:
#import@inte***ce people : nsobject
- (void)walk;
@end
@implementation people
- (void)walk
@end
@inte***ce adult : people
- (void)walk;
@end
@implementation adult
- (void)walk
@end
int main(void)
綜上所述,self與super都是oc中常用的關鍵字,是初學者必須掌握好的兩個關鍵字,self用於當前類物件或者類型別物件呼叫方法,誰呼叫即誰就是self。super一般用於子類想重寫父類的方法,但又想保留父類的一些行為。
OC中self和super的使用
1 self用在物件方法中,self指代的是呼叫當前方法的那個物件,可以呼叫其它物件方法。2 self用在類方法中,self指代的是當前類,可以呼叫其它類方法,不可以呼叫物件方法。3 self修飾例項變數 一般在set方法中使用 用在形參變數和例項變數同名時。例 void setspeed int ...
在OC中,super和self的用法
super 指代的是父類物件 super bark 呼叫了父類的bark方法 1 self用在物件方法中,self指代的是呼叫當前方法的那個物件,可以呼叫其它物件方法。2 self用在類方法中,self指代的是當前類,可以呼叫其它類方法,不可以呼叫物件方法。3 self修飾例項變數 一般在set方法...
OC語言基礎六 self和super
oc語言的self相當於c 語言的this,是乙個指標,隨著類的建立預設被建立出來。self和super的使用範圍是在類的內部,都只能用來呼叫方法。instancetype person void setname nsstring name person person self alloc init...