Swift

参考网址:

1. debug

How to view value of Swift “let” constant in Xcode 6 debugger

2. storyboard navigation implementation

3. selector in swift 2.2

// for swift 2.2
// version 1
buttton.addTarget(self, action: #selector(ViewController.tappedButton), forControlEvents: .TouchUpInside)
buttton.addTarget(self, action: #selector(ViewController.tappedButton2(_:)), forControlEvents: .TouchUpInside)

// version 2
buttton.addTarget(self, action: #selector(self.tappedButton), forControlEvents: .TouchUpInside)
buttton.addTarget(self, action: #selector(self.tappedButton2(_:)), forControlEvents: .TouchUpInside)

// version 3
buttton.addTarget(self, action: #selector(tappedButton), forControlEvents: .TouchUpInside)
buttton.addTarget(self, action: #selector(tappedButton2(_:)), forControlEvents: .TouchUpInside)

func tappedButton() {
  print("tapped")
}

func tappedButton2(sender: UIButton) {
  print("tapped 2")
}

@selector() in Swift 2.2

4. 类型转换

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if let viewController: SubViewController = segue.destinationViewController as? SubViewController {
    ...
  }
}

5. weak 弱引用相关使用

let task:NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { [weak self](data, response, connectionError) in
      dispatch_async(dispatch_get_main_queue(), {
        if let ref = self { // weak self is optional type
          ref.process(data, connectionError: connectionError)
        }
      })
    })

6. delegate

frist step, set delegate in code:

class ViewController: UIViewController {
  override func viewDidLoad() {
    UIScrollView.delegate = self;
  }
}

or in storyboard:

find view -> right button -> Outlets -> delegate connect to View Controller

second step, re-write delegate functions, for example:

extension ViewController: UIScrollViewDelegate {
  public func scrollViewDidScroll(scrollView: UIScrollView) {
    ...
  }
}