将UIImage作为参数-iOS -Cocos2D传递时访问不良

时间:2013-03-19 22:52:33

标签: ios cocos2d-iphone uiimage exc-bad-access

标题是我相信自我描述所以我将开始解释我的代码..

这是生成图像的代码..

- (UIImage *) convertDataToImage {
    NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"screenshot"];
    return [UIImage imageWithData:imageData];
}

如果我这样调用这个方法[(AppDelegate*)[[UIApplication sharedApplication] delegate] sendEmailWithImage:[self convertDataToImage]];那么一切都很好,除了它的速度..因为我有很多方法需要相同的图像..所以我想只调用一次convertImageToImage方法..

所以我试过..

.h

UIImage *image;

.m init

image = [self convertDataToImage];

最后

[(AppDelegate*)[[UIApplication sharedApplication] delegate] sendEmailWithImage:image];

似乎就像所有应该工作一样..但是我得到了一个糟糕的访问错误..

我该如何解决这个问题?

提前致谢..

更新:在我的init中,我尝试使用以下代码

CCTexture2D *texture = [[[CCTexture2D alloc] initWithImage:image] autorelease];

CCSprite *sp = [CCSprite spriteWithTexture:texture];
sp.position = ccp(100, 100);
[self addChild:sp];

它正在工作..但是在init之外仍然没有工作.. 我是自动释放纹理,是否也会释放我的图像?

1 个答案:

答案 0 :(得分:1)

由于您未在项目中使用ARC,因此retain UIImage返回的[self convertDataToImage]实例应image = [[self convertDataToImage] retain];

{{1}}