在class1中,我创建了一个class2对象。然后我在这个对象上使用一个方法来设置它的NSMutableArray
-(void) cloneArray: (NSMutableArray *) array{
pictures = [NSMutableArray arrayWithArray:array];
}
Class2是一个具有UIImageView的ViewController。
我在创建它之后呈现class2对象。然后,该类有自己的方法,在检测到滑动时显示下一个图像。
-(void) nextImageSelector{
if (counter == [pictures count]-1) {
counter = 1;
asset = [pictures objectAtIndex:counter];
ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation];
UIImage *fullScreenImage = [UIImage imageWithCGImage:[assetRepresentation fullScreenImage] scale:[assetRepresentation scale] orientation:[assetRepresentation orientation]];
photo.image = fullScreenImage;
}
应用程序在调用行
时崩溃if(counter == [pictures count] -1)
所以我认为它崩溃是因为为一个对象创建了数组,然后尝试检查下一个数组是否为类实例本身。
如何修复此问题,以便我可以复制此class2的数组以在其自己的方法中使用,如nextImageSelector?
答案 0 :(得分:1)
我认为你正在解决这个问题,因为你正在失去使用数组的访问权限,因为它是存取方法。
-(void)cloneArray: (NSMutableArray *) array
{
pictures = [[NSMutableArray arrayWithArray:array] retain];
}
答案 1 :(得分:0)
使用NSZombiesEnabled
查看您的NSMutableArray
是否已取消分配。你检查过你的记忆管理吗?运行Build&分析也可以提供帮助。
你看到什么样的崩溃?
在cloneArray
方法中,不保留图片数组。您必须将它保留在Class2中,并确保在完成第2课的dealloc
方法后将其释放。