在loadView
期间,我创建了20个UIButton
,我想根据UIPageControl
的状态更改标题文字。
我有一个预先保存的plist,在当前页面更改时加载到名为NSArray
的{{1}}中,我将按钮标题设置为数组中相关的文本标题。执行此操作的代码是:
arrChars
当设置按钮的标题时,它似乎不会自动释放前一个标题,并且分配会上升和上升。我做错了什么?
之前有人告诉我,通过分配跟踪事情是追逐泄漏的一种不好的方法,因为据我所知,该对象没有泄漏到仪器中,但我的总生活分配继续攀升,直到我收到内存警告。如果有更好的方式跟踪那里我很想知道。
更新
忘记提及不是使用我从数组中检索的值而是将标题设置为@“Test” - 它很好,每次更改页面时都没有无限增加。
答案 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 :)来加载和释放。
希望这可以帮助那些人。