为什么在addObserver:forKeyPath:options:AFNetworking中使用forKeyPath中的NSStringFromSelector(@selector(countOfBytesReceived))?
问题描述:
在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”。
答
NSStringFromSelector(@selector(countOfBytesReceived))
是严格更好的,因为只要在Xcode中打开了“Undeclared Selector”警告,任何错字或拼写错误都会在编译时被捕获。如果您错误地使用了,例如,@"countOfByteReceived"
所有内容都可以正常编译,但在运行时您的代码将无法正常工作。 NSStringFromSelector
表单也可以让编辑帮助你完成代码。
[哪种方法用于KVC?](https://*.com/q/15023832/4244136) – Willeke