## 注意点

1. timer 是 weak 的
2. swift 2.2 中 #selector 的用法
3. selector 的函数，也就是 sayHello 是可以接收参数的

Timers work in conjunction with run loops. To use a timer effectively, you should be aware of how run loops operate—see NSRunLoop and Threading Programming Guide. Note in particular that run loops maintain strong references to their timers, so you don’t have to maintain your own strong reference to a timer after you have added it to a run loop.

The selector should have the following signature: timerFireMethod: (including a colon to indicate that the method takes an argument). The timer passes itself as the argument, thus the method would adopt the following pattern:
- (void)timerFireMethod:(NSTimer *)timer

So far so good!

SOF 上有个解决办法，加个中间层，修改后的代码如下：