Я новичок в разработке iphone, я хочу создать изменяемый массив, который может получать доступ и заполнять из разных контроллеров представления. Как я могу это сделать? Если вы можете, дайте мне образец кода
3 ответа
В большинстве случаев использование глобальных переменных не требуется и не полезно. Если вам нужно их использовать, самый простой способ - поместить массив в свой AppDelegate.
Вы можете получить доступ к массиву (именованному массиву в AppDelegate здесь) с помощью:
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *aArray= [appDelegate array];
В 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
Надеюсь, это поможет.
В вашем массиве отклонений @interface YourClass
:
@property (nonatomic, retain) NSMutableArray *publicArray;
В своем @implementation YourClass
напишите следующее:
@synthesize publicArray;
Если у вас есть ссылка yourClassVariable
на этот объект, вы можете получить доступ к этой переменной, используя [yourClassVariable publicArray];
или yourClassVariable.publicArray;
Похожие вопросы
Связанные вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].