这个问题已经困扰我一段时间了,不知何故我找不到我做错了什么。我必须说我是 Objective-C 和 Xcode 的新手。
所以问题是我尝试声明一个实例变量 (NSMutableArray),但由于某种原因,从未达到 init 函数。该变量始终为 NULL。
所以我有一个名为 PropertyProvider 的类,其中包含一个名为“properties”的 NSMutableArray。
@interface PropertyProvider : NSObject {
NSMutableArray *properties;
}
@property (nonatomic, retain) NSMutableArray *properties;
..
@end
然后我在这个 PropertyProvider 类的 init 方法中实例化这个 NSMutableArray,如下所示:
@implementation PropertyProvider
@synthesize properties;
- (id) init {
self = [super init];
NSLog(@"Instantiating PropertyProvider");
if (self) {
properties = [[NSMutableArray alloc] init];
}
return self;
}
.. more code ..
@end
在我的应用程序委托(delegate)中,我尝试将 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];
}
但是,由于某种原因,它永远不会到达我的 PropertyProvider 的 init 方法。为什么为什么?!
感谢您的帮助!
最佳答案
将 _prp
初始化为 PropertyProvider
实例的正确方法是,
_prp = [[PropertyProvider alloc] init];
因为 _prp
是一个实例变量,默认情况下它是 nil
因此发送给它的消息不会做任何事情,这就是你没有得到任何消息的原因错误。
关于iphone - 为什么我的 Application Delegate 中的类变量没有被实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504936/