2017-06-01 59 views
0

在AFNetworking源代碼AFURLSessionManager.m,爲什麼在addObserver:forKeyPath:options:AFNetworking中使用forKeyPath中的NSStringFromSelector(@selector(countOfBytesReceived))?

(NSURLSessionTask *)task 
[task addObserver:self 
     forKeyPath:NSStringFromSelector(@selector(countOfBytesReceived)) 
      options:NSKeyValueObservingOptionNew 
      context:NULL]; 

爲什麼使用 「NSStringFromSelector(@selector(countOfBytesReceived))」,而不是@ 「countOfBytesReceived」。

+0

[哪種方法用於KVC?](https://stackoverflow.com/q/15023832/4244136) – Willeke

回答

1

NSStringFromSelector(@selector(countOfBytesReceived))是嚴格更好的,因爲只要在Xcode中打開了「Undeclared Selector」警告,任何錯字或拼寫錯誤都會在編譯時被捕獲。如果您錯誤地使用了,例如,@"countOfByteReceived"所有內容都可以正常編譯,但在運行時您的代碼將無法正常工作。 NSStringFromSelector表單也可以讓編輯幫助你完成代碼。

相關問題