为什么不设置静态变量?

时间:2016-01-14 15:55:27

标签: ios objective-c

我有静态变量:

static PaginationTableRestaurants *pagination;

在实施之后我做了:

pagination.next = 3;
NSLog(@"%@", pagination.next);// nil

它给我零,为什么?

1 个答案:

答案 0 :(得分:1)

您从未初始化分页变量,根据您的代码判断。如果您尝试在nil实例上设置属性,则方法调用无法工作。

如果对您来说该变量是静态的,那么您可以通过这样的类方法来实现该行为。

+ (NSArray *)restaurants
{
   static NSArray *_restaurants;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
      _restaurants = @[
                  @"Restaurant 1",
                  @"Restaurant 2",
                  @"Restaurant 3",
                  @"Restaurant 4",
                  @"Options"
                  ];
   });
   return _restaurants;
}

现实情况是,您几乎肯定只是想声明一个属性并在以后初始化它。

@interface ViewController ()
@property (strong, nonatomic) NSArray *restaurants;
@end