事實上在OC的對象方法(減號方法)和類方法(加號方法)並非相互獨立的,它們也能夠發生千絲萬縷的關系,今天我們來研究下它們兩者相互調用的問題。該樣例還是以People類為基礎。
(一)對象方法調用類方法:
(1)先在People.h中分別聲明兩個方法:
-(void)show; +(void)showw2;
(2)然后在People.m中分別實現兩個方法,並在對象方法中調用類方法,調用方式也是用 “類名 方法名”進行。
-(void)show{ NSLog(@"我是一個對象方法。我被調用了!"); [People show2];//調用類方法 } +(void)show2{ NSLog(@"我是一個類方法,我被調用了!"); // [[People alloc] show]; }
(3)最后在main.m中調用對象方法:
People *people = [[People alloc] init];//注意沒有在main.m中直接調用 [people show ];
(4)隨后的輸出結果例如以下。先輸出對象方法中的內容,然后輸出類方法中的內容,結果符合預期。
類方法成功在對象方法中被調用。
。
(二)類方法調用對象方法
(1)先在People.h中分別聲明兩個方法:
-(void)show; +(void)showw2;
(2)在People.m文件里實現兩個方法,並在類方法中調用對象方法,注意是怎樣調用的。
[People alloc]相當於實例化了一個對象。使用該對象調用show對象方法;
-(void)show{ NSLog(@"我是一個對象方法,我被調用了。"); } +(void)show2{ NSLog(@"我是一個類方法,我被調用了!"); [[People alloc] show]; }
(3)最后在mian.m中調用類方法show2.
[People show2];
(4)輸出結果例如以下。先輸出類方法中的內容,再輸出對象方法中的內容,符合我們的預期:
。
總之。減號方法和加號方法的相互調用使我們的代碼更為靈活,編程更為方便。
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!