Chr*_*all 2 iphone memory-leaks uiimage cgimage ios
好.我会寻找答案,也可以自己找.我有回答自己问题的恶习.
无论如何,我有一个应用程序,旨在相当容易"皮肤化".作为其中的一部分,我在静态类中隔离了特定于变体的方法.这些静态方法提供特定于变体的主应用程序图像,颜色和设置..h文件对于主应用程序是通用的,但.m文件特定于变体.
我喜欢使用能够发送图像作为背景(自动平铺),因此接口文件指定例程返回UIColor,如下所示:
+ (UIColor *)meetingDetailBackgroundColor;
Run Code Online (Sandbox Code Playgroud)
但是实现文件加载了一个图像文件,并返回它,如下所示:
+ (UIColor *)meetingDetailBackgroundColor
{
return [UIColor colorWithPatternImage:[UIImage imageNamed:@"DarkWeave.png"]];
}
Run Code Online (Sandbox Code Playgroud)
在上下文中使用哪个,如下所示:
[[self view] setBackgroundColor:[BMLTVariantDefs meetingDetailBackgroundColor]];
Run Code Online (Sandbox Code Playgroud)
注意:编辑恢复我使用的原始简单代码.
现在,问题是我有时(并不总是)得到泄漏.
我确定我在这里做些什么.我只是不确定是什么.
有任何想法吗?
BTW:这是一个在IOS 5上运行的ARC程序.我是ARC的新手,但我认为这是我应该这样做的方式.
UIColor colorWithPatternImage马车,不要使用它.我的经验是,它往往会严重削弱设备的性能,但不会削弱模拟器的性能.像滚动或动画一样的东西往往会变慢.我不确定这是否真的有资格作为泄漏,我没有看到App因为RAM耗尽而被杀死.但是,如果您对应用程序进行概要分析,您会看到应用程序在UIColor colorWithPatternImage启用和绘制内容时运行得慢得多.
最终我创建了一个子类UIView,并做了类似这样的事情:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(c, kCGBlendModeCopy);
CGContextDrawTiledImage(c, CGRectMake(0, 0, bkgnd.size.width, bkgnd.size.height), bkgnd.CGImage);
}
Run Code Online (Sandbox Code Playgroud)
这将平铺图像.然后我使用self.tableView.backgroundView或[self.view insertSubview:bkgnd atIndex:0]使其成为背景.它在设备上运行得更快,并导致零内存泄漏.
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |