//
// 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")
}
}