第四周第二天

第四周第二天

二元數(shù)組的初始化和調(diào)用

enum PointState {
    case Space, Black, White
}
 var board: [[PointState]]
 
board = [[PointState]](count: 15, repeatedValue: [PointState](count: 15, repeatedValue: .Space))
//初始化一個橫縱都為15的數(shù)組
//它的具體某一個值得調(diào)用是
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//邏輯反運(yùn)算
            }
        }
    }

-------------調(diào)用
func randomMove() {
        let row = Int(arc4random_uniform(15))
        let col = Int(arc4random_uniform(15))
        //這里的renjuBoard既不是數(shù)組也不是字典卻可以通過下標(biāo)進(jìn)行運(yùn)算查找
        if renjuBoard[row, col] {
            renjuBoard[row, col] = renjuBoard.isBlackTurn
            setNeedsDisplay()
        }
    }

委托回調(diào)

有的時候某個對象要做某件事情但其自身又沒有能力做這件事情
這個時候就可以使用委托回調(diào)的編程模式讓別的對象來做這件事情

//實(shí)現(xiàn)委托回調(diào)的編程模式有以下幾個步驟:
//  1. 設(shè)計(jì)一個協(xié)議(被委托方必須要遵循協(xié)議才能給別的對象當(dāng)委托)
protocol CanvasDelegate: class {
   // 協(xié)議里面的方法就是要委托其他對象做的事情
   
   func showMessage(canvas: Canvas, message: String)
}
// 2. 委托方添加一個屬性其類型是遵循了協(xié)議的被委托方
   weak var delegate: CanvasDelegate?
// 3. 自己做不了的事情委托給別的對象來做
                       delegate?.showMessage(self, message: renjuBoard.isBlackTurn ? "白棋勝" : "黑棋勝")
//  4. 讓視圖控制器遵循協(xié)議成為被委托方(協(xié)議表能力)
class ViewController: UIViewController, CanvasDelegate 
//  5. 遵循協(xié)議就必須要實(shí)現(xiàn)協(xié)議中的方法(協(xié)議表約定)
   func showMessage(canvas: Canvas, message: String) {
       let alertController = UIAlertController(title: message, message: "", preferredStyle: .Alert)
       let okAction = UIAlertAction(title: "確定", style: .Default) { action in
           // 此處通過尾隨閉包來定義點(diǎn)擊確定按鈕后要做什么
           canvas.clearBoard()
       }
       alertController.addAction(okAction)
       self.presentViewController(alertController, animated: true, completion: nil)
   }
//  6. 給畫布對象綁定委托(self就是視圖控制器對象它遵循了協(xié)議所以有充當(dāng)委托的能力也就是說可以扮演被委托方的角色)
       canvas.delegate = self


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 嘗試修改首頁個人信息欄 改變字體:font-family: Verdana, arial, helvetica, ...
    yisky閱讀 237評論 0 0
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 115,557評論 24 450
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,697評論 18 399
  • 沉迷學(xué)習(xí),日漸消瘦,一天不學(xué)習(xí),渾身難受。 學(xué)習(xí)Swift已過一個月,已經(jīng)從零基礎(chǔ)到入門,能夠逐漸理順?biāo)季w,找到關(guān)...
    Daniel01閱讀 221評論 0 0
  • 談花說愛 鳳凰花兒為誰開,幸福等候君去采。 莫在站臺空徘徊,愛要大聲說出來。 ——2017...
    文字砌匠閱讀 131評論 0 3

友情鏈接更多精彩內(nèi)容