美文网首页
第四周第二天

第四周第二天

作者: theDeskmateOfSb | 来源:发表于2016-08-17 20:52 被阅读0次

第四周第二天

二元数组的初始化和调用

enum PointState {
    case Space, Black, White
}
 var board: [[PointState]]
 
board = [[PointState]](count: 15, repeatedValue: [PointState](count: 15, repeatedValue: .Space))
//初始化一个横纵都为15的数组
//它的具体某一个值得调用是
board[11][10]
board[i][j]

索引器语法

subscript(row: Int, col: Int) -> Bool {
        get { return board[row][col] == .Space }
        set(isBlack) {
            if board[row][col] == .Space {
                board[row][col] = isBlack ? .Black : .White
                isBlackTurn = !isBlackTurn//逻辑反运算
            }
        }
    }

-------------调用
func randomMove() {
        let row = Int(arc4random_uniform(15))
        let col = Int(arc4random_uniform(15))
        //这里的renjuBoard既不是数组也不是字典却可以通过下标进行运算查找
        if renjuBoard[row, col] {
            renjuBoard[row, col] = renjuBoard.isBlackTurn
            setNeedsDisplay()
        }
    }

委托回调

有的时候某个对象要做某件事情但其自身又没有能力做这件事情
这个时候就可以使用委托回调的编程模式让别的对象来做这件事情

//实现委托回调的编程模式有以下几个步骤:
//  1. 设计一个协议(被委托方必须要遵循协议才能给别的对象当委托)
protocol CanvasDelegate: class {
   // 协议里面的方法就是要委托其他对象做的事情
   
   func showMessage(canvas: Canvas, message: String)
}
// 2. 委托方添加一个属性其类型是遵循了协议的被委托方
   weak var delegate: CanvasDelegate?
// 3. 自己做不了的事情委托给别的对象来做
                       delegate?.showMessage(self, message: renjuBoard.isBlackTurn ? "白棋胜" : "黑棋胜")
//  4. 让视图控制器遵循协议成为被委托方(协议表能力)
class ViewController: UIViewController, CanvasDelegate 
//  5. 遵循协议就必须要实现协议中的方法(协议表约定)
   func showMessage(canvas: Canvas, message: String) {
       let alertController = UIAlertController(title: message, message: "", preferredStyle: .Alert)
       let okAction = UIAlertAction(title: "确定", style: .Default) { action in
           // 此处通过尾随闭包来定义点击确定按钮后要做什么
           canvas.clearBoard()
       }
       alertController.addAction(okAction)
       self.presentViewController(alertController, animated: true, completion: nil)
   }
//  6. 给画布对象绑定委托(self就是视图控制器对象它遵循了协议所以有充当委托的能力也就是说可以扮演被委托方的角色)
       canvas.delegate = self


相关文章

  • 那年,夏天(八·终章)

    第二天,周侨又找到夏天,也不说话,静静地坐在他旁边。 第三天...... 第四天...... 周侨笃定,夏天会回去...

  • 链接内外在 放下无效社交

    NS1.30 11.23 水晶黄种子年 光谱蛇之月 第四周黄色成熟之周 Seli·海底轮·流动 今天是红蛇波第二天...

  • Kin211 电力的蓝猴

    今天是2019年5月24日,是宇宙的红月年‧ 释放的光谱蛇之月·第四周黄色收成之周的第二天,激活的是HARM(顶轮...

  • 第四周第二天

    尝试修改首页个人信息栏 改变字体:font-family: Verdana, arial, helvetica, ...

  • 第四周第二天

    第四周第二天 二元数组的初始化和调用 索引器语法 委托回调 有的时候某个对象要做某件事情但其自身又没有能力做这件事...

  • 山东宇悦妈读经记录

    日期:2018年11月9日 周期:第二周第二天 读经内容: 1.《周易•上经•坤卦第二——蒙卦第四》 名句语录:天...

  • 实习周记~

    这是我来这个小村庄的第四周辣~是我的第四周和这个小村子的第四周和我学生的第四周~实习生活在不知不觉中就溜走了四分之...

  • 1219周记,年终小总结

    12.19周六周记,中正组朱峻锋 《中国历史精神》第四周周记 第四周和第五周周记合集: 完整的周记务必...

  • 山东宇悦妈读经记录

    日期:2018年11月23日 周期:第四周第二天 读经内容: 1.《周易•上经•比卦第八—履卦第十》 名句语录:小...

  • 习悟‖量价时空指标OBV的交易方法和发散思维

    写于2022.10.19 周三 天气 阴 习战已过第四周的第二天,自己还总是犯极低级的错误。已买入的个债,就会遇到...

网友评论

      本文标题:第四周第二天

      本文链接:https://www.haomeiwen.com/subject/jgamsttx.html