在类中访问NSMutableArray

时间:2011-02-21 12:53:40

标签: iphone

在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?

2 个答案:

答案 0 :(得分:1)

我认为你正在解决这个问题,因为你正在失去使用数组的访问权限,因为它是存取方法。

-(void)cloneArray: (NSMutableArray *) array
{
    pictures = [[NSMutableArray arrayWithArray:array] retain];
}

答案 1 :(得分:0)

使用NSZombiesEnabled查看您的NSMutableArray是否已取消分配。你检查过你的记忆管理吗?运行Build&分析也可以提供帮助。

你看到什么样的崩溃?

cloneArray方法中,不保留图片数组。您必须将它保留在Class2中,并确保在完成第2课的dealloc方法后将其释放。