swift demo 学习

//
//  ViewController.swift
//  WebRtcIOS
//
//  Created by wjr on 2018/11/13.
//  Copyright © 2018 wjr. All rights reserved.
//

import UIKit

typealias AddBlock = (Int,Int) -> Void;

class ViewController: UIViewController {
    var pig : Pig!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        
        pig = Pig();
        pig.walk();
        print(pig.doSomething(a: 1, b: "2"));
        pig.doSomethingLater { [weak self] (a : Int, b : Int) -> Void in
            guard let this = self else { return }
            print("\(a + b + this.pig.age)")
        };
        pig.doSomethingLater2 { [weak self] (a : Int, b : Int) -> Void in
            guard let this = self else { return }
            print("\(a + b + this.pig.age)")
        };
        //pig = nil;
    }


}

class Animal: NSObject {
    var name : String!
    
    override init() {
        self.name = "animal";
    }
    func walk(){
        print("\(self.name ?? "nobody") walk");
    }
    
    deinit {
        print("animal deinit")
    }
}

class Pig: Animal {
    let age : Int = 3;
    
    override init() {
        super.init();
        self.name = "Pig";
    }
    
    func doSomething(a:Int32, b:NSString) -> String
    {
        let fuc = {(c : Int32) -> Int32 in
            return c + 1
        }
        
        let c = fuc(a)
        return "\(c + b.intValue)"
    }
    
    func doSomethingLater(block : @escaping AddBlock)
    {
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            block(1,4);
        }
    }
    
    func doSomethingLater2( block :@escaping (Int,Int) -> Void) -> Void {
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            block(1,4);
        }
    }
    
    deinit {
        print("Pig deinit")
    }
    
}


猜你喜欢

转载自blog.csdn.net/HeroRazor/article/details/84069516