我正在开发一个iOS应用程序,并且我在其中一个表中使用以下代码来返回特定部分中的行数:
return [[kSettings arrayForKey:@"views"] count];
还有其他方法可以编写这行代码,以便提高内存效率吗?
修改
kSettings
= NSUserDefaults standardUserDefaults
。
有没有办法重写我的代码行,以便它占用的内存比现在发布的内存更早发布?
答案 0 :(得分:2)
它需要更高效吗?永远记住前两个优化规则:
具体来说,如果应用程序运行缓慢,那么确定减速发生的确切位置非常重要。它似乎永远不会出现在您认为的位置,因此您必须对其进行剖析并确定。调查仪器。
只是说。 : - )
答案 1 :(得分:2)
嗯,我想到的第一件事是“为什么每次调用NSUserDefaults
时都会从-tableView:numberOfRowsInSection:
获取数组?”
将此数组的指针引用存储在UIViewController
子类中,如下所示:
@interface YourViewController : UITableViewController {
NSArray *views;
}
@property (nonatomic) NSArray *views;
- (void) reload:(BOOL) reloadTable;
//...
@end
@implementation YourViewController
@synthesize views;
- (void) reload:(BOOL) reloadTable {
[self setViews:[NSUserDefaults arrayForKey:@"views"]];
if(reloadTable)
[[self tableView] reloadData];
}
- (void) viewDidLoad {
[super viewDidLoad];
//...
[self reload:NO];
}
- (NSInteger) tableView:(UITableView *) table numberOfRowsInSection:(NSInteger) section {
return [[self views] count];
}
//...
@end
当您需要完全重新加载表的数据时,只需调用[self reload:YES]
。
这种方法可以帮助您的方式是因为它只会在您调用NSUserDefaults
时从-reload:
重新获取数据,这会减少访问NSUserDefaults
的次数。