【非凡程序員】 OC第十二節課 (協議)

 

//協議特色:制定一份協議,其餘類若是遵照就須要去實現前提是required(默認)
// < > 遵照
// NSObject 既是基協議 又是基類,所以,協議最終都需遵照NSObject
// required 必須實現  optional 可選實現
// respondToSelector:@selector(方法名) 判斷一個方法是否存在
// 子類繼承父類 那麼子類也遵照父類的協議
// 協議能夠多遵照,如: <myProtocol , NSObject>
// 警記! 協議只是相似方法聲明,實現還在本身類中
// 類與類之間相互引用 @class  前置一個。
// 對象與對象之間相互調用 至少一端是weak。
函數


#import <Foundation/Foundation.h>oop

//定義一個協議 名字是myProtocol 遵照基協議 <NSObject>
@protocol  myProtocol <NSObject>ui

 

//必須實現的
@required

- ( void ) say;
@property(nonatomic, strong) NSTimer *timer;
@property(nonatomic, assign) int timerCount;atom

//可選實現的
@optional

- ( void ) log;
@endspa

//Person的另外一個協議teach
@protocol teach <NSObject>
//可選的
@optional
- (void) run;
- (void) speak;
- (void) teach:(NSString *)sentence;.net

@end對象

 

//判斷是否存在say方法(重點)繼承

   SEL sel = @selector(say);
        if( [person1 respondsToSelector:sel ]){
            NSLog( @" you  say  " );
        }else{
            NSLog( @" meiyou  say " );
        }
       get

//子類一旦繼承父類,相關父類遵照的協議 子類也須要遵照 能夠使用
@interface Student : Personit

@end

  
//標準協議寫法 須要寫出所遵照的協議
Student<teach> *stu = [[Student alloc]init];

 

//當類屬性寫在協議裏是,在類中的.m文件中須要用@synthesize(重點)

@implementation Person
@synthesize timer = _timer , timerCount = _timerCount;

 

//如下是NSTimer的使用方法(重點)

- (id) init
{
    self = [super init];
    if( self ){
        _timer = [NSTimer scheduledTimerWithTimeInterval:1.0F target:self selector:@selector(say) userInfo:nil repeats:YES];
    }
    return self;
}

- (void) say
{
    _timerCount++;
    NSLog( @"人說:Hello %i" , _timerCount);
   
    if( _timerCount  > 5 ){
        [_timer invalidate];
    }
}
@end


//main函數中寫的調用函數 (重點)

//[[NSRunLoop currentRunLoop]run];

相關文章
相關標籤/搜索