Objective c 目标c中的[自我]是什么意思?
我刚刚读了一些的源代码,看到了这个Objective c 目标c中的[自我]是什么意思?,objective-c,ios,Objective C,Ios,我刚刚读了一些的源代码,看到了这个 +(void) initialize { if(!_sharedNetworkQueue) { static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _sharedNetworkQueue = [[NSOperationQueue alloc] init]; [_sharedNetworkQueue addObs
+(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
相同,只是一个多余的调用
[self self] // ---> Same object of self
-self
是一种方法。它返回接收者,即您将消息self
发送到的对象。如果你做了[a self]
,你会得到a
,是的,如果你做了[self self]
(或self.self
),你确实会得到self
它在键值路径中可能很有用,在键值路径中,您应该附加一个新组件,但希望观察整个对象,就像在Cocoa绑定中一样。我在你发布的代码中没有看到这方面的任何应用,但可能是代理采用了不同的
self
,指向代理本身,而不是远程/转发对象。我的第一个猜测是,它指向self的元类。也许有人能证实这是真的?关于ObjC元类的更多信息,请参见以下内容:(Objective-C将元类用于类方法等实际目标,但在其他方面倾向于隐藏元类。例如,[NSObject class]与[NSObject self]
)@WolfgangSchreurs:Nope。