_表示局部变量?

时间:2016-01-07 02:56:04

标签: ios objective-c reactive-cocoa

我是ReactiveCocoa和Objective-C的新手。我看到在下面的代码中有_subscribeCommand的用法,但是没有声明它的地方。它与subscribeCommand方法一致。这是一个局部变量吗?

- (RACCommand *)subscribeCommand {
  if (!_subscribeCommand) {
      NSString *email = self.email;
      _subscribeCommand = [[RACCommand alloc] initWithEnabled:self.emailValidSignal signalBlock:^RACSignal *(id input) {
          return [SubscribeViewModel postEmail:email];
      }];
  }
  return _subscribeCommand;
}

本教程中找到了完整的代码 http://codeblog.shape.dk/blog/2013/12/05/reactivecocoa-essentials-understanding-and-using-raccommand/

1 个答案:

答案 0 :(得分:2)

在类上创建属性时,Objective-C将创建一个实例变量,其名称与属性相同,但带有下划线前缀。在链接到的教程中,有一个subscribeCommand属性:

@property(nonatomic, strong) RACCommand *subscribeCommand;

在课程中,您可以使用self.subscribeCommand使用getter / setter访问此属性,或使用_subscribeCommand直接访问该变量。

如果直接访问实例变量,则绕过getter / setter,无论是类中的显式getter / setter还是强制执行属性属性的隐含getter / setter(nonatomicstrong等)。

在您链接到的示例中,subscribeCommand方法是subscribeCommand属性的显式getter。没有setSubscribeCommand方法,因此将使用默认的setter(这将强制执行属性的strongnonatomic属性。)