1

我正在制作我的第一个应用程序,并且已经在 android 上制作了它,现在正试图在 iphone 上制作它,但没有客观的 c 经验。该应用程序非常简单,除了一个部分,即数组。

该应用程序有一个按钮,按下时需要将信息存储到数组中。我遇到的问题是,当我在发生按钮单击操作的方法中创建数组时,每次单击按钮时,它都会创建一个新数组,从而破坏了数组的点。当我在方法之外创建数组时,它要么没有传递到方法中(错误显示未定义),要么当我在 .h 文件中声明对象时,程序编译,但是当我点击按钮时它崩溃了。

任何帮助将不胜感激。例子会很好,但即使有人能指出我要查找的正确方向,这也能让我免于秃顶。

4

2 回答 2

3

尝试这样的事情(这不是 ARC) -

@interface MyViewController : UIViewController {

    NSMutableArray *myArray;

}


@implementation MyViewController

-(id)init {

    self = [super init];

    if (self) {

        myArray = [[NSMutableArray alloc] init];

    }

    return self;

}


-(void)dealloc {

    [myArray release];

    [super dealloc];

}


-(IBAction)buttonPressed {

    [myArray addObject:someObject];

}

@end
于 2012-04-11T17:18:56.003 回答
2

您需要在 .h 文件的接口声明的花括号部分内将数组声明为实例变量(又名“ivar”),并指定的初始化程序中对其进行初始化

在 .h 文件中:

@interface MyClass : NSObject {
    NSMutableArray *myArray
}
// methods
@end

在 .m 文件中:

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

现在您可以myArray在类的所有实例方法中使用。

编辑:此示例假定您正在使用自动引用计数。由于这是您的第一个应用程序,因此使用 ARC 是一个好主意(XCode 会在您创建新项目时询问您是否愿意使用它)。

于 2012-04-11T17:12:52.767 回答