我试图降低我的应用程序在运行时使用的内存占用空间.
在根据系统字体大小获取字体的标准用法中,api用作font = [NSFont systemFontOfSize]。
+ (NSFont *)systemFontOfSize:(CGFloat)fontSize; // Aqua System font根据我的理解,font将被自动释放池释放,首先我需要确认这种低估是正确的吗?
如果这是正确的,那么如果我有一个drawWithFrame函数,我在每次绘制单元格时都使用这个函数。我不应该把它放那儿吗?是否会增加应用程序的内存占用,因为在调用应用程序自动释放池时,字体将被释放?
现在这个理解又是正确的吗?有两种方法
NSAutoReleasePool *pool。在画框中自己画出来你们有什么建议?
发布于 2011-11-27 05:25:36
我不习惯和Font打交道,所以我可能会离开。
但是对于我来说,如果您经常需要和对象,我会将它缓存在一个属性中。
创建和删除比读取属性更昂贵。
如果这是类的一个关键特性,我将在类的init中创建它。
这将节省不必要的测试,以确定它是否已经存在。
发布于 2011-11-27 05:05:04
函数名systemFontOfSize:不以任何神奇的关键字"alloc“、"new”、"copy“或"mutableCopy”开头,因此您不负责发布它返回的内容。有关细节,请参阅可可基本内存管理规则。
发布于 2011-11-27 05:05:57
与大多数返回对象的非“init”方法一样(“复制”是一个突然出现的异常),systemFontOfSize返回的对象是自动释放的,因此它将在不久的将来被释放。
如果要使用变量“字体”指向的对象,则应保留该对象,并在不再需要时(或在被另一种字体替换之前)释放它。
编辑:我只是重新读了一遍,发现你每次都在创建字体,所以第二段与你的问题没有太大关系,但无论如何,除非字体必须在每秒进行多次修改,否则我会考虑在drawrect方法之外创建字体对象。我不知道这会对您当前的FPS/响应性产生多大的实际影响,但通常情况下,习惯于不做诸如在循环中多次重复创建对象之类的事情是很好的。
https://stackoverflow.com/questions/8283750
复制相似问题