2014-01-07 6 views
0

Я нашел несколько объяснений, как исправить это, но ни один из них (который я нашел) достаточно прост для понимания. Новое в Objective-c.Глобальные переменные не инициализируются

Я ищу доступ к массиву в нескольких классах в объективе c. Я пытаюсь создать глобальную переменную (я знаю, неэффективна) в классе «Globals.h», инициализировать их в другом классе и получить доступ к этой информации в еще одном классе.

Heres то, что у меня есть.

В Globals.h

#import <UIKit/UIKit.h> 

extern NSArray *globalRows; 

@interface Globals : NSObject 

@end 

ViewController.m

#import "Globals.h" 

-(void)initGlobal{ 
    globalRows = [[NSArray alloc] initWithArray:rows]; 
} 

Компилятор не хочет инициализировать переменную, и я не понимаю, почему.

EDIT:
Класс Globals предназначен только для хранения глобальных переменных, в этом классе нет исполняемого кода.

Причина, по которой я инициализирую в ViewController, заключается в том, что информация, необходимая для анализа, хранится.

Ошибка отсутствует, и код не будет компилироваться.

EDIT2:

Кажется, я нашел очень хорошее объяснение here!

+0

Зачем вам инициализировать его в другом классе? В режиме аренды вызовите метод в классе 'Globals' ... – Wain

+0

Является ли код в initGlobal когда-либо выполненным? У вас есть ошибка? Пожалуйста, добавьте больше данных, чтобы ваш вопрос мог получить ответ. –

+0

Отредактировано вопросом. – user3009729

ответ

1

NSObjects имеет метод инициализации + (void), который вы можете настроить, который вызывается во время запуска. Вы также можете просто назвать это из основного.

Тем не менее, лучший шаблон дизайна - сделать одноэлементный элемент для хранения какой-либо глобальной вещи, которую вы хотите получить/использовать. Точно так же размещение вещей внутри вашего делегата приложения делает их эффективно глобальными.

+0

Одиночный метод кажется лучшим вариантом. Будет ли это работать с MutableArrays? – user3009729

Смежные вопросы