2011-06-28 21 views
1

這個問題一直在困擾我一段時間,不知何故,我無法找到我做錯了什麼。我必須說我是Objective-C和Xcode的新手。爲什麼我的應用程序委託中的類變量沒有被實例化?

所以問題是我試圖聲明一個實例變量(NSMutableArray),但由於某種原因,init函數從來沒有達到。該變量始終爲NULL。

所以我有一個名爲PropertyProvider的類,它包含一個名爲「properties」的NSMutableArray。

@interface PropertyProvider : NSObject { 
    NSMutableArray *properties; 
} 

@property (nonatomic, retain) NSMutableArray *properties; 

.. 

@end 

我然後實例化這個NSMutableArray的這個PropertyProvider類的init方法如下所示:

@implementation PropertyProvider 

@synthesize properties; 

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

    NSLog(@"Instantiating PropertyProvider"); 

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

    return self; 
} 

.. more code .. 

@end 

在我的應用程序代理我嘗試實例化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我的方法PropertyProvid呃。爲什麼?爲什麼?

感謝您的幫助!

回答

1

初始化_prp作爲PropertyProvider實例將是正確的方法,

_prp = [[PropertyProvider alloc] init]; 

由於_prp是一個實例變量,它是nil在默認情況下,因此消息給它什麼都不做也就是你沒有得到任何錯誤的原因。

+0

該死,你是如此的正確。愚蠢從我不看它..嘆氣..一定是盯着它太久了!非常感謝! 對不起,愚蠢的問題.. :) – Jules

+0

@Jules:這不是一個愚蠢的問題,如果它幫助你解決你的問題。 – JeremyP

相關問題