2016-01-14 6 views
0

У меня есть статическая переменная:Почему статическая переменная не задана?

static PaginationTableRestaurants *pagination; 

После того как в реализации я:

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

Это дает мне ноль, почему?

+2

Где код, который устанавливает 'pagination'? Единственный код, который вы показываете, не устанавливает начальное значение для 'pagination', просто' pagination.next'. – rmaddy

+0

Почему вы используете статическую переменную? Не делай этого. – cdstamper

+0

Каков тип данных для «следующего» в классе «PaginationTableRestaurants»? –

ответ

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 
Смежные вопросы