Почему моя переменная класса в моем делегате приложения не создается? - PullRequest
1 голос
/ 28 июня 2011

Эта проблема беспокоила меня уже некоторое время, и я почему-то не могу понять, что я делаю неправильно.Я должен сказать, что я новичок в Objective-C и XCode.

Так что проблема в том, что я пытаюсь объявить переменную экземпляра (NSMutableArray), но по какой-то причине функция init НИКОГДА не достигается.Переменная всегда NULL.

Итак, у меня есть класс с именем PropertyProvider, который содержит NSMutableArray с именем «properties».

@interface PropertyProvider : NSObject {
    NSMutableArray *properties;
}

@property (nonatomic, retain) NSMutableArray *properties;

..

@end

Затем я создаю экземпляр этого NSMutableArray в методе init этого класса PropertyProvider следующим образом:

@implementation PropertyProvider

@synthesize properties;

- (id) init {
    self = [super init];

    NSLog(@"Instantiating PropertyProvider");

    if (self) {
        properties = [[NSMutableArray alloc] init];
    }

    return self;
}

.. more code ..

@end

В моем делегате Application я пытаюсь создать экземпляр PropertyProvider как "prp":

@implementation MyAppDelegate

@synthesize prp = _prp;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [[_prp init] alloc];
    [self.window makeKeyAndVisible];
    return YES;
}

.. more code ..

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

Но, по какой-то причине, он никогда не достигает метода init мой PropertyProvider .Почему, почему ?!

Спасибо за помощь!

1 Ответ

1 голос
/ 28 июня 2011

Правильный способ инициализации _prp как экземпляра PropertyProvider будет следующим:

_prp = [[PropertyProvider alloc] init];

Поскольку _prp является переменной экземпляра, по умолчанию это nil и, следовательно, сообщенияон ничего не делает, поэтому вы не получаете никаких ошибок.

...