I have static variable:
static PaginationTableRestaurants *pagination;
After in implementation I do:
pagination.next = 3;
NSLog(@"%@", pagination.next);// nil
It gives me nil, why?
I have static variable:
static PaginationTableRestaurants *pagination;
After in implementation I do:
pagination.next = 3;
NSLog(@"%@", pagination.next);// nil
It gives me nil, why?
You never initialized the pagination variable, judging by your code. If you try to set a property on a nil instance, your method call cannot work.
If it is actually important to you that that variable is static, you can achieve that behavior by getting it through a class method like this.
+ (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;
}
The reality is that you almost certainly just want to declare a property and initialize it later.
@interface ViewController ()
@property (strong, nonatomic) NSArray *restaurants;
@end
