我正在嘗試使用for循環生成整數數組。這裏是我的代碼:使用for循環創建數組
int total = 20;
for(int x = 0; x < total; x++)
{
NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}
通過上述實施我得到了數組只有一個對象,是最後一個。該怎麼做arr來包含從1到20的數字?
我正在嘗試使用for循環生成整數數組。這裏是我的代碼:使用for循環創建數組
int total = 20;
for(int x = 0; x < total; x++)
{
NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}
通過上述實施我得到了數組只有一個對象,是最後一個。該怎麼做arr來包含從1到20的數字?
int total = 20;
NSMutableArray *arr = [[NSMutableArray alloc] init];
for(int x = 0; x < total; x++)
{
[arr addObject:[NSNumber numberWithInt:x]];
}
// release the array when you are done with it.
NSMutableArray *arr = [NSMutablearray arrayWithCapacity:total];
for(int x = 0; x < total; x++)
{
[arr addObject:[NSNumber numberWithInt:x]];
}
在每一個循環中,您創建了一個對象新的數組。在這個例子中你創建數組一次,而不僅僅是添加對象。
你應該在循環之外初始化你的數組,而不是在循環中。
你的代碼改成這樣:
int total = 20;
NSMutableArray *arr = [NSMutableArray array];
for(int x = 0; x < total; x++)
[arr addObject:[NSNumber numberWithInt:x]];
你每次都重新創建陣列。將NSArray
設爲iVar或在循環之外初始化它。
NSArray
是一個不可變的類(這意味着你不能添加/刪除對象的運行時),你在這裏做什麼是很奇怪的。你在循環中創建一個新的數組。
您可以使用NSMutableArray
,但在循環的外部。通過這種方式,您可以在循環外部獲得引用,並且可以向其添加對象。 NSMutableArray
是可變的。您可以更改對象運行時。
NSMutableArray* numberArray = [[NSMutableArray alloc] init];
for(int x = 0; x < total; x++)
{
[numberArray addObject:[NSSnumber numberWithInt:x]];
}
+1解釋 – 2012-02-02 17:58:06
@helk非常感謝你 – 2012-02-02 18:01:00
每次創建新的NSArray
並將其分配給NSArray *arr
。 +arrayWithObjects:
方法創建一個新的數組。 NSArray不可變,你應該使用NSMutableArray
。
NSArray的創建靜態數組,和創建的NSMutableArray動態 陣列。
NSMuatbleArray *arr = [[NSMutableArray alloc]init];
for(int i =0 ; i<20 ; ++i)
{
[array addObject:[NSNumber numberWithInt:i]];
}
'[[NSMutableArray alloc] init];'而不是'[NSMutableArray alloc] init]'。乾杯 – 2012-02-02 17:48:16
@Flex_Addicted:你知道你可以編輯來自拼寫錯誤的回覆=)我會改變它,thanx m8! – 2012-02-02 17:55:23
是的,但只有在至少修改了6個字符的情況下才能編輯問題。也許我錯了...無論如何謝謝。 – 2012-02-02 17:59:30