常遇到一個block要使用self,會處理成在外部聲明一個weak變量指向self(__weak __typeof(self) weakSelf = self),在block裏又聲明一個strong變量指向weakSelf(__strong __typeof(weakSelf) strongSelf = weakSelf),
weakSelf是爲了block不持有self,避免循環引用,而再聲明一個strongSelf是因爲一旦進入block執行,就不允許self在這個過程中釋放。block執行完成後這個strongSelf會自動釋放,沒有循環引用