Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/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 无法在NSMutableArray中存储映像_Objective C_Uiimage_Nsmutablearray_Xcode4.3 - Fatal编程技术网

Objective c 无法在NSMutableArray中存储映像

Objective c 无法在NSMutableArray中存储映像,objective-c,uiimage,nsmutablearray,xcode4.3,Objective C,Uiimage,Nsmutablearray,Xcode4.3,我正在尝试将图像保存在NSMutable数组中,但它不起作用 这就是我正在做的 [imagesList addObject:[UIImage imageNamed:@"b.png"]]; 执行这一行之后,我注意到对象的数量仍然是0 有什么原因吗 谢谢 我在几个方面重复了这段代码: 我宣布: NSMutableArray *imagesList; NSUserDefaults *imagesHistory; 在我的viewdidload方法中,我写道: imagesHistory=[NSUse

我正在尝试将图像保存在NSMutable数组中,但它不起作用

这就是我正在做的

[imagesList addObject:[UIImage imageNamed:@"b.png"]];
执行这一行之后,我注意到对象的数量仍然是0 有什么原因吗

谢谢

我在几个方面重复了这段代码:

我宣布:

NSMutableArray *imagesList;
NSUserDefaults *imagesHistory;
在我的viewdidload方法中,我写道:

imagesHistory=[NSUserDefaults standardUserDefaults];  //imagesHistory is created globallt as NSUserDefault imagesHistory
[imagesHistory setObject:imagesList forKey:@"images history"];

UIImage *image;
image=[UIImage imageNamed:@"b.png"];

[imagesList addObject:image];
imagesHistory=[NSUserDefaults standardUserDefaults];
[imagesHistory setObject:imagesList forKey:@"images history"];
在didFinishLaunchingWithOptions中,我写道:(即使我在添加字符串时不需要这样做…)


不管它是否是全局变量,您仍然需要为对象调用
alloc
init
。如果您打算在整个应用程序中使用它,那么
appDidFinishLaunchingWithOptions
是添加此呼叫的好地方:

imagesList = [[NSMutableArray alloc] init];

不管它是否是全局变量,您仍然需要为对象调用
alloc
init
。如果您打算在整个应用程序中使用它,那么
appDidFinishLaunchingWithOptions
是添加此呼叫的好地方:

imagesList = [[NSMutableArray alloc] init];

尝试添加对象后,您正在分配/初始化
imagesList
。在添加任何内容之前,需要alloc/init
imageList

要确保它在那里,请尝试以下操作:

if(!imagelist)imagelist=[[NSMutableArray alloc]init]


如果它存在,并且您仍然存在此问题,则可能是您正在分配/初始化新的NSMutableArray,并在添加对象后将其分配给
imageList
。这意味着旧数组将被丢弃,剩下的新数组中没有项目。

在尝试添加对象后,您正在分配/初始化
imagesList
。在添加任何内容之前,需要alloc/init
imageList

要确保它在那里,请尝试以下操作:

if(!imagelist)imagelist=[[NSMutableArray alloc]init]


如果它存在,并且您仍然存在此问题,则可能是您正在分配/初始化新的NSMutableArray,并在添加对象后将其分配给
imageList
。这意味着旧数组将被丢弃,您将得到一个零项的新数组。

是否保留您的空数组?如果不使用自动引用计数,则很有可能使用以下命令初始化数组

imagesList = [[NSMutableArray alloc] init];
但它没有被保留。您需要保留空数组,以便在代码中进一步追加它

imagesList = [[[NSMutableArray alloc] init] retain];

只是不要忘记在使用完阵列后,在
viewDidUnload
或任何合适的地方释放阵列。

是否保留空阵列?如果不使用自动引用计数,则很有可能使用以下命令初始化数组

imagesList = [[NSMutableArray alloc] init];
但它没有被保留。您需要保留空数组,以便在代码中进一步追加它

imagesList = [[[NSMutableArray alloc] init] retain];

只是不要忘记在使用完阵列后,在
viewDidUnload
或任何合适的地方释放阵列。

尝试
UIImageView*image;
图像=[UIImage ImageName:@“b.png”]


另外,在
@property(非原子,retain)
中使用“strong”而不是“retain”

尝试
UIImageView*image;
图像=[UIImage ImageName:@“b.png”]



另外,在
@property(nonatomic,retain)
中,使用“strong”而不是“retain”

您是否尝试在单独的一行上创建图像,并查看它是否为
nil
?您确定
imagesList
已正确分配和初始化吗?要么无法加载图像(没有b.png),要么imagesList实际上不可更改。@DanF:我在两行上完成了它(我创建了一个UIImage变量,将图像分配给它,我可以看到内存已分配给该变量)然后我将它添加到NSMUtablearray中,但仍然没有添加对象。imagesList是一个全局变量,根据经验,我不需要对它进行初始化和分配,还是我遗漏了什么?@DrummerB:图像存在,imagesList是可变的,当然你需要对它进行分配和初始化。那就是你的问题了。你有没有试过把图像放在另一行上,看看它是不是
nil
?您确定
imagesList
已正确分配和初始化吗?要么无法加载图像(没有b.png),要么imagesList实际上不可更改。@DanF:我在两行上完成了它(我创建了一个UIImage变量,将图像分配给它,我可以看到内存已分配给该变量)然后我将它添加到NSMUtablearray中,但仍然没有添加对象。imagesList是一个全局变量,根据经验,我不需要对它进行初始化和分配,还是我遗漏了什么?@DrummerB:图像存在,imagesList是可变的,当然你需要对它进行分配和初始化。那就是你的问题了。你是否有更多的代码行要显示,关于你在哪里添加对象,让我们看看你是如何确定数组中对象的数量的?另外,您的
imagesList的声明是有用的信息。您到底在做什么来确定imagesList中有0个对象?您是否有更多的代码行要显示,在您添加对象的位置周围,让我们看看您是如何确定数组中对象的数量的?也,您的
imagesList的声明是有用的信息您到底在做什么来确定imagesList中有0个对象?我按照您的建议尝试在应用程序委托中添加此行,也是在添加对象之前,仍然遇到相同的问题…您是否也在分配/初始化很多次?查看我的更新答案。我检查了它,我只分配了一个变量。我还做了一个小测试,发现如果我将addobject中的图像更改为字符串,它工作得非常好…听起来图像本身似乎有问题。文科硕士