首先,這里發表聲明:
本博客從今天起從博客園落腳,從前在CSDN寫的全部博客已經轉載于此,希望有越來越多的人能看到我的博客,并在評論中交流學習經驗。
好了,廢話不多說,進入正題。
———————————————————————————————————————————
PRotocol的引用問題
這一部分是對前面我們學習過的協議 protocol的補充,所以知識涉及的比較少,但是也很重要,希望大家也要熟練掌握:
直接上代碼:
main.m
#import <Foundation/Foundation.h>
#import "Student.h"
#import "workProtocol.h"
//★注意,雖然Student類遵守這個協議,但是我們還要在main.m中導入這個協議的頭文件(因為在Student類的頭文件中我們用的是引入協議(@protocol ......)我們只是讓系統知道有Student這個類,只是通過了編譯而已)
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu=[Student new];
[stu run];
[stu work];
}
return 0;
}
workProtocol.h
#import <Foundation/Foundation.h>
@protocol workProtocol <NSObject>
-(void)work;
@end
Student.h
#import <Foundation/Foundation.h>
@protocol workProtocol;//我們不用每次編譯的時候都編譯一次這個協議,我們只需要在運行的時候編譯一次就夠了,所以我們這里可以只是告訴編譯器一聲 workProtocol是一個協議 就好了。(其目的還是為了節約編譯的內存和時間)
//而且我們還可以在一個類的.h文件中直接去寫一個協議,這樣可以直接用這個協議(work2)
@protocol work2 <NSObject>
-(void)run;
@end
@interface Student : NSObject <workProtocol,work2>
@end
Student.m
#import "Student.h"
#import "workProtocol.h"
//我們只需在.m中用到協議中的方法的時候再用import導入即可
@implementation Student
-(void)work
{
NSLog(@"student work!");
}
-(void)run
{
NSLog(@"run!");
}
@end
———————————————————————————————————————————
新聞熱點
疑難解答