我有一个(可能)非常简单的问题让我的大脑震惊。
我创建了一个类“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变量我没有问题。
实际上我昨天没有进一步。这就是我想要做的事情。
我需要一个类,我创建一个数组。这是因为我想稍后用一些userinput填充这个数组。
所以我得到了我的班级:
AClass.h
#import <Foundation/Foundation.h>
@interface AClass : NSObject
//Array deklarieren
@property NSMutableArray *WordList;
@end
否,在主文件中我想创建此类的对象,以访问* WordList数组。后来课程获得了更多的东西,所以这就是现在的试用。 我是一名C ++开发人员,对于objective-c很新,所以请向我的noob问题道歉。
到目前为止我做了什么:
#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;
}
但这没有给我什么。数组是空的。 我在这里缺少什么?
迎接
答案 0 :(得分:1)
您需要为property
创建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"];
答案 1 :(得分:0)
您需要先实例化数组,然后才能向其中添加对象。这可以通过各种方式完成:
1 - 在自定义类的init方法中:
@implementation AClass
- (id)init {
self = [super init];
if (self) {
_WordList = [[NSMutableArray alloc] init];
}
return self
}
// Rest of class implementation...
@end
2 - 通过在自定义类中实现自己的属性getter来使用延迟加载。
@implementation AClass
- (NSMutableArray *)WordList {
if (_WordList == nil) {
_WordList = [[NSMutableArray alloc] init];
}
return _WordList;
}
// Rest of class implementation...
@end
第二种可能是首选,因为它只在实际引用对象时分配内存。