创建UIButtons

时间:2012-06-24 09:08:00

标签: iphone ios memory-management uibutton

loadView期间,我创建了20个UIButton,我想根据UIPageControl的状态更改标题文字。

我有一个预先保存的plist,在当前页面更改时加载到名为NSArray的{​​{1}}中,我将按钮标题设置为数组中相关的文本标题。执行此操作的代码是:

arrChars

当设置按钮的标题时,它似乎不会自动释放前一个标题,并且分配会上升和上升。我做错了什么?

之前有人告诉我,通过分配跟踪事情是追逐泄漏的一种不好的方法,因为据我所知,该对象没有泄漏到仪器中,但我的总生活分配继续攀升,直到我收到内存警告。如果有更好的方式跟踪那里我很想知道。

更新

忘记提及不是使用我从数组中检索的值而是将标题设置为@“Test” - 它很好,每次更改页面时都没有无限增加。

2 个答案:

答案 0 :(得分:0)

你正在做很多不必要的字符串创建和格式化。您可以替换这些行:

NSString *value = [[NSString alloc] initWithFormat:@"%@", [self.arrChars objectAtIndex:iArrPos]];
NSLog(@"%@", value);

[uButton setTitle: [[NSString stringWithFormat:@"%@", value] forState: UIControlStateNormal];

用这些:

NSString *title = [self.arrChars objectAtIndex:iArrPos];

[uButton setTitle:title forState:UIControlStateNormal];
[title release];

setTitle:上使用title会增加保留次数 - 请务必release之后。

答案 1 :(得分:0)

经过漫长的夜晚,我决定咬紧牙关,将其送入Apple的DTS。

虽然回复很有用,但这并不是我所希望的。在arrChar中偶尔会出现字形,加载后我被告知不要卸载。完整的解释:

据我所知,iOS在加载到内存后不会卸载字形。这就是为什么你在Instrument.app中看到内存分配在加载新字符时上升,并在你稍后返回时保持平坦。 iOS的设计行为几乎不能改变任何东西。如果你真的想控制内存使用量,你可以交替使用UIImage(imageWithContentsOfFile :)来加载和释放。

希望这可以帮助那些人。