?
今天劉國斌老師講了有關oc語言里的委托模式(代理模式),通過了一個打地鼠的游戲講解了委托模式的功能作用,之后連帶講解了協議的書寫和使用。??
?????打地鼠功能包括屏幕隨機出現地鼠,點擊消失,如果不點擊5秒后自動消失,屏幕右上角有一個label顯示點擊的數量;編寫思維是,首先在文件里粗昂見一個類,在類里重寫init方法,加上每。5秒出現的事件,倒入viewcontroler文件,在地鼠類里聲明一個屬性delegate,在button點擊事件加上創建對象點delegate調用viewcontroler里的加分方法。????
??????協議的使用時先創建對象,三步順序??一般都是用蘋果給我們寫好的控件,不用自己寫協議。
??????一,用對象點delegate
??????二,如果能點出delegate那么該控件就有協議,到interface上寫上協議
??????三,看協議里是否有必須執行的方法
-?(void)viewDidLoad?{
????[super?viewDidLoad];
????self.lb=[[UILabel?alloc]initWithFrame:CGRectMake(0,?0,?55,55)];
????self.lb.backgroundColor=[UIColor?redColor];
????self.lb.text=@"0";
????[self.view?addSubview:self.lb];
????
????[NSTimer?scheduledTimerWithTimeInterval:1?target:selfselector:@selector(moo)?userInfo:nil?repeats:YES];
????
}
-(void)moo{
????Mouse?*mm=[[Mousealloc]initWithFrame:CGRectMake(arc4random()%333,arc4random()%666,?33,?33)];
????//???委托模式,實例一個對象,在Mose里又一個屬性?ViewController?*vc,叫對象mm點出他的屬性,之后把自身的頁面給mm里的屬性vc。
????mm.vc=self;
????[self.view?addSubview:mm];
????
}
????//???聲明方法,叫Mouse類每次調用此方法是label的text數值加一
-(void)addS{
????int?old=self.lb.text.intValue;
????int?new=old+1;
????
????self.lb.text=@(new).stringValue;
}
?