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。