Я новичок в разработке iphone, я хочу создать изменяемый массив, который может получать доступ и заполнять из разных контроллеров представления. Как я могу это сделать? Если вы можете, дайте мне образец кода

3
smartsanja 28 Авг 2011 в 16:03

3 ответа

Лучший ответ

В большинстве случаев использование глобальных переменных не требуется и не полезно. Если вам нужно их использовать, самый простой способ - поместить массив в свой AppDelegate.

Вы можете получить доступ к массиву (именованному массиву в AppDelegate здесь) с помощью:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

NSArray *aArray= [appDelegate array];
1
Amandir 28 Авг 2011 в 12:13

В MVC у вас есть представления, контроллеры и модели. Вы должны надавить как можно сильнее. Несколько представлений и контроллеров могут работать с одной и той же моделью, которая управляет данными и бизнес-логикой.

В вашем случае у вас есть простой набор общих данных - изменяемый массив.

Я бы предложил создать класс, содержащий этот изменяемый массив и предоставляющий методы. Обычно этот класс является одноэлементным.

Итак, подойдет несколько контроллеров.

MyModel *model = [MyModel sharedInstance];

Тогда оба контроллера могут работать с ним.

Вот хорошая статья по теме: http://cocoawithlove.com/2008/11/singletons-appdelegates -and-top-level.html

Синглтон из яблока: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32

Надеюсь, это поможет.

3
bryanmac 28 Авг 2011 в 12:25

В вашем массиве отклонений @interface YourClass:

@property (nonatomic, retain) NSMutableArray *publicArray;

В своем @implementation YourClass напишите следующее:

@synthesize publicArray;

Если у вас есть ссылка yourClassVariable на этот объект, вы можете получить доступ к этой переменной, используя [yourClassVariable publicArray]; или yourClassVariable.publicArray;

1
Nekto 28 Авг 2011 в 12:11