我有我的遊戲,簡單地水平移動的對象類型。它有這樣的方法:瞭解是否使用協議或繼承(?或兩者)
-(void)moveLeftWithBlock:(void(^)())block {
self.targetX = self.position.x - MOVE_AMOUNT;
id action = [CCMoveTo actionWithDuration:0.125f position:ccp(self.targetX, self.targetY)];
id ease = [CCEaseInOut actionWithAction:action rate:4];
[self runAction: [CCSequence actions: ease,
[CCCallBlock actionWithBlock:block], nil]];
}
...
現在,我想要創建第二種類型的對象,除了它也可以垂直移動之外,它完全一樣......我最初的想法是僅僅對該對象的類進行子類化,並覆蓋moveLeftWithBlock並更新其目標Y ..但不能只是我不喜歡這個解決方案,因爲我最終還是得到了兩個類中99%的重複代碼,但也因爲我的遊戲需要在臨近之前設置Y位置調用moveLeftWithBlock方法。
所以接下來我想 - 好的,所以我可以讓我的遊戲調用prepareToMove方法,它可以做任何可能需要的設置...對於主對象類型,什麼都不..對於第二個對象鍵入,設置目標Y.
但是,我立即開始思考 - 等待----我知道協議是關於明確定義可選或必需的方法的,並且這讓我覺得也許我應該在這裏利用它,但我不是當然如何。
那麼,任何人都可以向我解釋在這種情況下如何使用一個協議 - 如果它是「要走的路」或不是?