问题:在分析MKNetworkKit源码的时候,遇到下面这段代码:
+(void) initialize {
if(!_sharedNetworkQueue) {
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedNetworkQueue = [[NSOperationQueue alloc] init];
[_sharedNetworkQueue addObserver:[self self] forKeyPath:@"operationCount" options:0 context:NULL];
[_sharedNetworkQueue setMaxConcurrentOperationCount:6];
});
}
}
到底这里的[self self]意味着什么呢?
分析:查了一些资料才发现,-self是定义在NSObject协议里面的一个方法。它返回了消息的接受者,也就是你把self消息发给的对象。如果你这样发送消息[a self],那么你会得到a。如果[self self],那么确实会获得self。
具体为什么作者不直接使用self,而用[self self],原因还在探讨。希望大家一起讨论!