0

我有一个小(也许)非常简单的问题,让我的大脑感到撕裂。

我创建了一个类“ArrayClass”:

//  ArrayClass.m


#import "ArrayClass.h"

@implementation ArrayClass{

    NSMutableArray *NameList;

}

@end

现在我想在我的主文件中的这个类的一个对象上填充这个数组。

我以为这是对的,但不幸的是没有结果。

//Main File:

//Create an object

ArrayClass *object_bla = [[ArrayClass alloc] init];

那么如何用“object_bla”对象填充我的数组呢?

我无法访问此数组。使用正常的例如 int 变量我没有问题。


其实我昨天还不是很远。所以这就是我想要做的。

我需要一个类,在其中创建一个数组。这是因为我想稍后用一些用户输入填充这个数组。

所以我得到了我的课程:

类.h

#import <Foundation/Foundation.h>

@interface AClass : NSObject

//Array deklarieren
@property NSMutableArray *WordList;


@end

在主文件中没有我想创建这个类的一个对象,以访问 *WordList 数组。后来班级得到更多的东西,所以现在是一个试用期。我是一名 C++ 开发人员,对 Objective-c 非常陌生,所以请原谅我的菜鸟问题。

这就是我到目前为止所做的:

#import <Foundation/Foundation.h>
#import "AClass.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {

    //create object
    AClass *blabla = [[AClass alloc] init];

    //fill array
    [blabla.WordList addObject:@"GünterKörper"];

    //output
    for (int i = 0; i<[blabla.WordList count]; i++){
        NSLog(@"Objekte: %@", [blabla.WordList objectAtIndex:i]);
    }


    }
    return 0;
}

但这没有给我任何东西。数组为空。我在这里缺少什么?

问候

4

2 回答 2

1

您需要创建一个propertyfor NameList

@property (strong) NSMutableArray *NameList;

然后在你的main文件中

在 main 中创建一个tempArray,用一些数组填充它,然后使用:

NSMutableArray *tempArray=[NSMutableArray arrayWithArray:@[@"A",@"B",@"C"]];
[object_bla setNameList:tempArray;

如果要一次添加一个对象:

[object_bla.NameList addObject:@"new object"];
于 2013-04-08T14:03:12.503 回答
0

您需要先实例化数组,然后才能向其中添加对象。这可以通过多种方式完成:

1 - 在您的自定义类的 init 方法中:

@implementation AClass 

- (id)init {
    self = [super init];
    if (self) {
        _WordList = [[NSMutableArray alloc] init];
    }
    return self
}

// Rest of class implementation...

@end

2 - 通过在自定义类中实现自己的属性获取器来使用延迟加载。

@implementation AClass 

- (NSMutableArray *)WordList {
    if (_WordList == nil) {
        _WordList = [[NSMutableArray alloc] init];
    }
    return _WordList;
}

// Rest of class implementation...

@end

第二个可能是首选,因为它仅在您实际引用对象时分配内存。

于 2013-04-09T08:17:35.263 回答