Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标-C为什么不';我的数组不能工作吗?_Objective C_Cocoa_Multidimensional Array - Fatal编程技术网

Objective c 目标-C为什么不';我的数组不能工作吗?

Objective c 目标-C为什么不';我的数组不能工作吗?,objective-c,cocoa,multidimensional-array,Objective C,Cocoa,Multidimensional Array,这可能是一个完全愚蠢的问题,但我对objective-C和编程基本上还是相当陌生的。 我正在尝试创建一个数组,但无法使其正常工作: @interface ArraysAndDicts : NSObject { NSMutableArray * mySimpleArray; NSMutableArray * myComplicatedArray; } 实施: -(void)generateValueForArrayOfArrays { [self generateValueForA

这可能是一个完全愚蠢的问题,但我对objective-C和编程基本上还是相当陌生的。 我正在尝试创建一个数组,但无法使其正常工作:

@interface ArraysAndDicts : NSObject {
 NSMutableArray * mySimpleArray;
 NSMutableArray * myComplicatedArray;
}
实施:

-(void)generateValueForArrayOfArrays {

    [self generateValueForArray]; 
    //this generates an array with 5 elements 'mySimpleArray'

    [myComplicatedArray addObject:mySimpleArray];

    NSMutableArray * mySecondaryArray = [[NSMutableArray alloc] init];
    [mySecondaryArray addObject:@"twoone"];
    [mySecondaryArray addObject:@"twotwo"];

    [myComplicatedArray addObject:mySecondaryArray];
(为了清晰起见,我删掉了所有NSLog)

运行我的应用程序时,控制台会告诉我:

mySecondaryArray计数=2

mySimpleArray计数=5

myComplicatedArraycount=0

所以我知道还有其他方法可以制作多维数组, 但我真的很想知道为什么这不起作用。
谢谢。

看起来您永远不会创建
myComplementArray
。这意味着

[myComplicatedArray addObject:mySimpleArray];
实际上是

[nil addObject:mySimpleArray];
在Objective-C中,向nil发送消息根本没有效果,因此不会发生任何事情。当您请求数组计数时,实际上是在发送
[nil count]
,在您的情况下,它将返回0。你可以在这里找到


还有,当你在做

NSMutableArray * mySecondaryArray = [[NSMutableArray alloc] init]; 
[mySecondaryArray addObject:@"twoone"]; 
[mySecondaryArray addObject:@"twotwo"];
mySecondaryArray
将泄漏。您应该使用
autorelease

NSMutableArray * mySecondaryArray = [[[NSMutableArray alloc] init] autorelease];
...
发布
,以适当的为准

NSMutableArray * mySecondaryArray = [[NSMutableArray alloc] init];
...
[mySecondaryArray release];

我们看不到MyComplicateArray是如何初始化的。可能是
nil

您在什么地方初始化了
myComplementArray

myComplicatedArray = [[NSMutableArray alloc] init];
[self generateValueForArray];
// etc...

哦,真的。我忘了初始化它><我知道这是个愚蠢的问题;)非常感谢你的帮助。:)