2017-06-01 26 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表单也可以让编辑帮助你完成代码。

相关问题