我需要用一个 刮 </跨度> 对我的比赛有影响。这是几年前的示例代码。
https://github.com/oyiptong/CGScratch
它工作正常,但当我与导航控制器一起使用时,它会重新进入。
编辑:
将all转换为arc时,并标记使用该视图的视图控制器 刮 </跨度> 查看为-fno-objc-arc,它有效。但是当你举旗时 刮 </跨度> 查看为-fno-objc-arc而不是它
在AppDelegate.m中
[window addSubview:viewController.view];
您应该将其替换为:
[window setRootViewController:viewController];
使用 CGImageCreateCopy 。
CGImageCreateCopy
这样做的原因是你发送了一个版本 CGImageRef 在你的 dealloc ,但如果你检查实际 CGImage 对象,你会看到它指向 相同的内存地址 每一次(我猜这是Apple优化的一部分,所以它就像你有一个 static UIImage 对象和参考它 CGImage )。
CGImageRef
dealloc
CGImage
static UIImage
所以在你的 initWithFrame: 你应该像这样抓住你的问题:
initWithFrame:
UIImage *sci = [UIImage imageNamed:@"scratchable.jpg"]; // This guy is always the same scratchable = CGImageCreateCopy(sci.CGImage);
的 PS: 强> 你有一个实际的泄漏 pixels ,所以你还需要一个 CFRelease(pixels);
pixels
CFRelease(pixels);
我测试,分析和测量了代码,现在似乎没问题。
这里也是固定项目的链接 (我还有一个导航控制器和一个按钮来推/弹) - 当然也使用ARC。
这个对我很有用 https://github.com/moqod/iOS-Scratch-n-See !