1

我想在一个类中创建并填充一个数组,然后在主程序中使用数组中的内容...作为示例,我将使用美国各州的名称列表...

这是对已解决一半的原始问题的更新,为了清晰起见,您可以正确查看代码。

ArrayStates.h

#import <Foundation/Foundation.h>
@interface ArrayStates : NSObject
@end

数组状态.m

#import "ArrayStates.h"
@interface ArrayStates() { NSMutableArray *listOfStates; }
@implementation ArrayStates
- (void)viewDidLoad {
    //---initialize the array---
    listOfStates = [[NSMutableArray alloc] init];
    //---add items---
    [listOfStates addObject:@"ALABAMA"];

    [listOfStates addObject:@"WYOMING"];
    [super viewDidLoad];
}
@end

这是上一个问题的更新代码,但它仍然在实现行上生成 Missing end 错误,void 想要一个 . 在方法原型之后,您仍然无法在主程序中引用该对象。

我相信如果接口和实现区分了数组是否可以在类内部或外部访问(感谢 iHungry),我相信会改变顺序。

4

3 回答 3

2

创建一个像 Mundi 在 .h 中所说的属性,然后只需在需要访问数组的地方导入 ArrayStates.h。然后,您可以创建类 ArrayStates 的实例(创建一个对象和 alloc-init),然后使用该对象访问其 listOfStates 属性。

于 2012-07-12T21:11:45.090 回答
1

在 viewDidLoad 方法中,必须先调用 super。顺便说一句,你的 ArrayStates 类是 NSObject 的子类,所以它的方法 viewDidLoad 不会被调用!

于 2012-07-12T07:33:39.987 回答
1
// in ArrayStates.h
@interface ArrayStates : NSObject
@property NSMutableArray *listOfStates;
@end

// in ArrayStates.m
@implementation ArrayStates
@synthesize listOfStates;
//...
-(void)viewDidLoad {
    [super viewDidLoad];
    listOfStates = [[NSMutableArray alloc] init];
}
@end

// in some other class
ArrayStates *states = [[ArrayStates alloc] init];
NSLog(@"%@", states.listOfStates);
于 2012-07-12T07:43:12.307 回答