从类中解决未声明的Indentifer(第2部分)

时间:2012-07-12 07:28:16

标签: iphone xcode

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

这是对原始问题的更新,该问题已中途解决,并且为了清晰起见而感到满意,因此您可以正确查看代码。

ArrayStates.h

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

ArrayStates.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),我认为改变了顺序。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分: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);