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  中的一切方法,也可以调用其的属性变量

     
  • 相关阅读:
    MySQL存储过程中的3种循环【转载】
    单元样选择按钮
    JavaScript(jQuery)实现打印英文格式日期
    哈希算法
    Hello,Expression Blend 4 (含Demo教程和源码)
    Cocos2Dx for XNA类解析(2): CCDirector(上)
    github for Windows使用介绍
    Hello,Behavior
    Vue component+vuedraggable拖拽动态表单
    Vue Component
  • 原文地址:https://www.cnblogs.com/pengyingh/p/2509067.html
Copyright © 2011-2022 走看看