代理与委托回调

代理模式讲解

protocol ExamCandidate: class {
    
    func answerTheQuestion()
}

class LazyStudent: ExamCandidate {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
    }
}

class Gunman: ExamCandidate {
    var name: String
    var target: LazyStudent?
    
    init(name: String) {
        self.name = name
    }
    
    func answerTheQuestion() {
        if let stu = target {
            print("姓名: \(stu.name)")
            print("奋笔疾书答案")
            print("提交试卷")
        }
    }
}

let stu = LazyStudent(name: "王大锤")
let gun = Gunman(name: "骆昊")
gun.target = stu
gun.answerTheQuestion()


委托回调模式讲解

protocol ExamDelegate: class {
    
    func answerTheQuestion()
}

class LazyStudent {
    var name: String
    weak var delegate: ExamDelegate?
    
    init(name: String) {
        self.name = name
    }
    
    func joinExam() {
        print("姓名: \(name)")
        delegate?.answerTheQuestion()
    }
}
class Gunman: ExamDelegate {
    
    func answerTheQuestion() {
        print("奋笔疾书各种答案")
    }
}

let stu = LazyStudent(name: "王大锤")
let gun = Gunman()
stu.delegate = gun
stu.joinExam()


字符串中各个数字或字母的获取


extension String {
    
    var length: UInt32 {
        get { return UInt32(self.characters.count) }
    }
    
    subscript(index: Int) -> Character {
        get { return self[self.startIndex.advancedBy(index)] }
    }
}

func randomInt(min: UInt32, _ max: UInt32) -> Int {
    return Int(arc4random_uniform(max - min + 1) + min)
}

func generateVerificationCode(length: Int) -> String {
    var code = ""
    if length > 0 {
        let str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        for _ in 0..<length {
            code.append(str[randomInt(0, str.length - 1)])
        }
    }
    return code
}

for _ in 1...10 {
    print(generateVerificationCode(4))
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,014评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 秋鸿点点秋云淡,雨落枝残, 霁月浓烟,愁断更量六屏山。 秦筝如泣声声慢,弦上辗转, 只觉凄寒,若有双鱼达暮关。
    九砚阅读 496评论 1 2
  • 昨天进行下周帮工的抽签,自己没有抽到,自己原本担心的许多事情也都迎刃而解。与其说是担心,不如说是各种不确定性选择的...
    goldfish2017阅读 171评论 0 0
  • 记得上一次去平遥是在2010年,那年表姐嫁了过去,由于我当时正在西安上学,没能参加表姐的婚礼,所以放暑假之后我特意...
    橙汁大叔阅读 579评论 0 0