Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS初始化静态对象';s成员失败_Objective C_Ios_Ios5 - Fatal编程技术网

Objective c iOS初始化静态对象';s成员失败

Objective c iOS初始化静态对象';s成员失败,objective-c,ios,ios5,Objective C,Ios,Ios5,我有以下代码在运行时失败。我的.h文件: @interface OutlineManager : NSObject { NSMutableArray* mOutlines; } @property(nonatomic,strong)NSMutableArray* Outlines; +(void)initialize; @end static OutlineManager* outlnManager; 在.m文

我有以下代码在运行时失败。我的.h文件:

 @interface OutlineManager : NSObject
    {
            NSMutableArray* mOutlines;
    }

    @property(nonatomic,strong)NSMutableArray* Outlines;


    +(void)initialize;

    @end

    static OutlineManager* outlnManager;
在.m文件中:

#import "OutlineManager.h"

@implementation OutlineManager

@synthesize Outlines = mOutlines;

+(void)initialize
{
    outlnManager = [[[OutlineManager superclass]alloc]init];
    if(outlnManager)
    {
        outlnManager.Outlines = [[NSMutableArray alloc]init]; //it crashes here
    }
    NSLog(@"OUTLINEMANAGER INITIALIZED");
}

@end
当我运行(void)时,初始化应用程序会在我放置注释的if部分崩溃,但我不知道为什么。我不能初始化这样一个静态对象数组吗

我想这是一个非常基本的东西,但我对Obj C/iOS还很陌生,所以请不要对我持反对态度

非常感谢你的帮助

真诚地说,佐利

你写道:

outlnManager = [[[OutlineManager superclass]alloc]init];
该超类意味着您在NSObject而不是OutlineManager上调用alloc。 只需将此行替换为以下内容:

outlnManager = [[OutlineManager alloc]init];
哦,您应该在.m文件中声明静态变量。

OutlineManager.h:

替换

static OutlineManager* outlnManager;
与:

和外接程序OutlineManager.m:

OutlineManager* outlnManager = nil;
+(void)initialize { // you should rename it to an other name.. initialize will be called twice
    outlnManager = [[OutlineManager alloc]init];
    if(outlnManager) {
        outlnManager.Outlines = [[NSMutableArray alloc]init];
    }
    NSLog(@"OUTLINEMANAGER INITIALIZED");
}

这很有效!但是当我无法将对象添加到另一个.m文件中的outlnManager.Outlines时,因为它是空的。它什么时候变为空的。ARC是否释放它?
OutlineManager* outlnManager = nil;
+(void)initialize { // you should rename it to an other name.. initialize will be called twice
    outlnManager = [[OutlineManager alloc]init];
    if(outlnManager) {
        outlnManager.Outlines = [[NSMutableArray alloc]init];
    }
    NSLog(@"OUTLINEMANAGER INITIALIZED");
}