zoukankan      html  css  js  c++  java
  • objective处委托协议

    满足正式协议  protocol 的委托只能执行协议中的方法,

    #import <Foundation/Foundation.h>@protocol GameBoardControllerDelegate <NSObject>
    @optional
    - (NSInteger)getColumns;
    - (NSInteger)getRows;
    @end
    #import "cocos2d.h"
    #import "GameBoardControllerDelegate.h"    //MVC中的C
    @class GameBoard;
    @class GameBoardView;
    
    @interface GameBoardController : CCNode <GameBoardControllerDelegate>
    {
        GameBoardView *_view;
    }
    @property(nonatomic,retain) GameBoard *gameBoard;    //MVC中的M
    @property(nonatomic,retain) GameBoardView *view;   //MVC中的V
    
    - (NSInteger)getColumns;
    - (NSInteger)getRows;
    @end
    #import "cocos2d.h"
    #import "GameBoardControllerDelegate.h"
    @interface GameBoardView : CCNode
    {
        id  <GameBoardControllerDelegate>_delegate;     //满足正式协议的传过来的  GameBoardController指针
    } @property(nonatomic,assign)id <GameBoardControllerDelegate> delegate; - (void)initView; @end
    #import "GameBoardView.h"
    @implementation GameBoardView
    @synthesize delegate = _delegate;
    
    - (void)initView
    {
        for (int i = 0; i <[_delegate getRows]; i++) {
            for (int j = 0; j< [_delegate getColumns] ; j++) {
                // position and render game board spaces
            }
        }
    }
    
    @end

    注:如果 delegate 不满足协议,直接传递  GameBoardController指针

      则delegate 可以执行  GameBoardController  中的一切方法,也可以调用其的属性变量

     
  • 相关阅读:
    [Cocos2d-x]布局与定位
    [Cocos2d-x]创建项目
    nylg-154-king 选 太子
    nylg-153-king VS king
    hdoj-2053-Switch Game
    hdoj-2052-Picture
    hdoj-2051-Bitset
    hdoj-2050-折线分割平面
    大一c语言课程设计-学籍管理系统
    hdoj-2049-不容易系列之(4)——考新郎
  • 原文地址:https://www.cnblogs.com/pengyingh/p/2509067.html
Copyright © 2011-2022 走看看