0

我有以下代码在运行时失败。我的 .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)initialize 应用程序在我放置评论的 if 部分崩溃时,但我不知道为什么。我不能像这样初始化一个静态对象的数组吗?

我想这是非常基本的东西,但我在 Obj C /iOS 上还很新,所以请不要对我不利。

非常感谢您的帮助!

真诚的,佐利

4

2 回答 2

1

你写了:

outlnManager = [[[OutlineManager superclass]alloc]init];

该超类意味着您在 NSObject 而不是 OutlineManager 上调用 alloc。只需将此行替换为:

outlnManager = [[OutlineManager alloc]init];

哦,你应该在 .m 文件中声明你的静态变量。

于 2012-06-18T10:24:06.680 回答
0

OutlineManager.h:

replace

static OutlineManager* outlnManager;

with:

OBJC_EXPORT OutlineManager* outlnManager;

and add in 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");
}
于 2012-06-18T11:24:43.420 回答