Определить глобальный NSMutableArray - PullRequest
1 голос
/ 19 апреля 2011

Есть ли способ определить глобальный NSMutableArray?Я хотел бы иметь возможность объявить массив, чтобы я мог получить доступ / изменить его через ряд методов экземпляра.Вот код, который я имею ниже, и хочу убедиться, что именно так я и должен это делать.

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    NSMutableArray *sizedWordList;
}

В .m:

sizedWordList = [[NSMutableArray alloc] init];

- (void)dealloc
{
    [sizedWordList release];
}

Ответы [ 4 ]

1 голос
/ 19 апреля 2011

Мне кажется, что вы не хотите глобальную переменную, а вместо этого переменную экземпляра.В этом случае ваше объявление:

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    NSMutableArray *sizedWordList;
}

в заголовочном файле является правильным.Однако в файле реализации вы не можете сделать следующее вне метода экземпляра (или, если это действительно глобальная переменная, вне метода класса или функции):

sizedWordList = [[NSMutableArray alloc] init];

Это не разрешено в Objective-C.Правильным местом для инициализации переменных экземпляра является метод -init.Поскольку ваш класс является подклассом UIViewController, вы должны переопределить его назначенный инициализатор, -initWithNibName:bundle::

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
    self = [super initWithNibName:nibName bundle:nibBundle];
    if (self) {
        sizedWordList = [[NSMutableArray alloc] init];
    }
    return self;
}

Ваш -dealloc метод почти правильный - помните, что вы должны всегда send [super dealloc] в конце вашего -dealloc метода:

- (void)dealloc
{
    [sizedWordList release];
    [super dealloc];
}

Сделав это, вы можете использовать массив в любом другом методе экземпляра.Например,

- (void)logWordList {
    NSLog(@"%@", sizedWordList);
}
1 голос
/ 19 апреля 2011

Конечно, вы можете создать класс и импортировать его туда, где вы хотите его использовать.

header:

#import <Foundation/Foundation.h>

extern NSMutableArray * typesArray;

@interface GlobalVariables : NSObject {

}

@end

реализация

#import "GlobalVariables.h"

@implementation GlobalVariables

NSMutableArray * typesArray;

@end

Теперь у вас есть доступк типам Array, где бы вы ни импортировали заголовок

0 голосов
/ 19 апреля 2011

Создайте одноэлементный экземпляр массива в вашем AppDelegate и получите доступ к нему через ваше приложение.

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

'Delegate.sizedWordList' - это ваш глобальный массив

Попробуйте его.Удачи.

0 голосов
/ 19 апреля 2011

Вы можете создать singleton и поделиться экземпляром.Синглтон позволит существовать только одному существующему экземпляру класса.Таким образом, каждый код доступа использует один и тот же экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...