客观c中[自我]意味着什么?

Car*_*loS 10 objective-c ios

我刚刚阅读了https://github.com/MugunthKumar/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];

    });
  }            
}
Run Code Online (Sandbox Code Playgroud)

那个[自我]在这里意味着什么?

Jes*_*per 10

-self协议中定义NSObject 的方法.它返回接收者,即您发送消息的对象self.如果你这样做[a self],你会a回来,是的,如果你做[self self](或self.self),你确实会self回来.

它可能在键值路径中很有用,在这些路径中你应该附加一个新组件,但是打算观察整个对象,就像在Cocoa Bindings中一样.我没有在您发布的代码中看到任何此类应用,但可能是代理采用self不同的方式,指向代理本身,而不是远程/转发对象.


ale*_*oot 8

self只是一个冗余的呼叫.

[self self] // ---> Same object of self
Run Code Online (Sandbox Code Playgroud)