2012-04-11 84 views
1

我正在製作我的第一個應用程序,並且已經在android上創建了它,現在正試圖在iphone上創建它,但沒有客觀的c經驗。該應用程序是超級簡單的,除了一個部分,數組。目標C中的通用數組C

該應用程序有一個按鈕,當按下按鈕時,需要將信息存儲到數組中。我遇到的問題是,當我在按鈕單擊操作發生的方法中創建數組時,每次單擊該按鈕時,都會創建一個新數組,從而破壞數組的點。當我在方法之外創建數組時,它不是傳遞給方法(錯誤表示未定義),或者當我在.h文件中聲明對象時,程序會編譯,但是當我點擊按鈕時,它會崩潰。

任何幫助將不勝感激。例子會很棒,但即使有人能指引我朝着正確的方向前進,這也會使我免於禿頂。

+0

我認爲你正在尋找'NSMutableArray',但我不知道,因爲我沒有很明白你的問題。你能否澄清你正在嘗試做什麼,併發布顯示你做了什麼的代碼? – Saphrosit 2012-04-11 17:07:20

+2

發表一些代碼。 – 2012-04-11 17:08:01

+0

你知道哪些語言?傳遞值與C/C++非常相似。只是這些對象是有趣的形狀,並且調用看起來像數組索引操作。 – 2012-04-11 17:24:00

回答

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 
2

您需要聲明您的數組作爲實例變量(又名「伊娃」)的接口聲明的在.h文件中的花括號段內,也初始化它在你指定的初始化。

在.h文件:

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

在.m文件:

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

現在,你可以在所有實例方法類的使用myArray

編輯:此示例假定您正在使用自動引用計數。由於這是您的第一個應用程序,因此使用ARC是一個好主意(XCode在您創建新項目時詢問您是否要使用它)。

+0

你應該指定這個例子是ARC。 OP可能沒有使用ARC,因爲在使用頭中聲明的數組時應用程序崩潰(假設它已在接口中正確定義)。 – Joe 2012-04-11 17:16:05

+0

@Joe你說得對,我認爲它是ARC,因爲「我正在製作我的第一個應用程序」,但沒有100%的確定性。謝謝! – dasblinkenlight 2012-04-11 17:17:59

+0

@dasblinkenlight對不起剛剛複製你的答案,當我開始寫它時,它不在這裏! – SomaMan 2012-04-11 17:20:20