2013-03-19 33 views
0

标题是相信自我描述性,所以我会开始解释我的代码..坏访问-Cocos2D

这是产生图像的代码..

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

如果我这样调用[(AppDelegate*)[[UIApplication sharedApplication] delegate] sendEmailWithImage:[self convertDataToImage]];这种方法然后一切都很好,它的速度身边..怎么我有需要同一图像的方法堆..所以我想打电话convertImageToImage方法只有一次..

所以我尝试..

.H

UIImage *image; 

.M初始化

image = [self convertDataToImage]; 

,最后

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

似乎像一切都没有问题,因为它是..但我得到一个坏的访问错误..

我该如何解决这个问题?

在此先感谢..

更新:在我的初始化我尝试使用下面的代码

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

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

,它是工作..但外面的init仍然没有工作.. 我自动释放质地,它是否也释放我的形象?

+0

你在项目中使用ARC? – Hejazi 2013-03-19 22:59:31

+0

我不使用弧..我更新了我的问题。 – user1526474 2013-03-19 23:00:55

+0

然后,我认为你应该保留图像。 – Hejazi 2013-03-19 23:05:00

回答

1

既然你不要在你的项目中使用ARC,你应该retain[self convertDataToImage]返回UIImage实例:

image = [[self convertDataToImage] retain]; 
+1

另外,你也许应该看看ARC;) – buildsucceeded 2013-03-19 23:08:14

+0

谢谢..工作得很好.. – user1526474 2013-03-19 23:12:45

+1

NA ..我觉得弧有点慢.. – user1526474 2013-03-19 23:13:07