Ios ARC中的分配

Ios ARC中的分配,ios,objective-c,uitableview,uiscrollview,Ios,Objective C,Uitableview,Uiscrollview,我面临一个问题,即在ARC启用项目中,如果通过调整y位置向滚动视图添加按钮,则分配显示为50%。但在圆弧中,它不应该显示正确。for循环可能会迭代15000次。我得到了无限的内存增长,我观察到当计数增加时,进度条变得懒惰 static int i; for(;i<15000;i++) { UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom]; but.frame = CGRectMake

我面临一个问题,即在ARC启用项目中,如果通过调整y位置向滚动视图添加按钮,则分配显示为50%。但在圆弧中,它不应该显示正确。for循环可能会迭代15000次。我得到了无限的内存增长,我观察到当计数增加时,进度条变得懒惰

 static int i;

 for(;i<15000;i++)
 {
     UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
     but.frame     = CGRectMake(50, j, 60, 30);  
     j = j+30;
     [_scroll addSubview:but]; 
 }

如评论中所述,该设置不太适合您的环境

由于实例化了15000个UIButton对象,您的应用程序占用了大量内存,因此速度变慢

您说过您需要有这么多实例,因为您正在为联系人创建某种列表。这正是UITableView或UITableViewController的使用案例,它与苹果在其预装应用程序中使用的UI控件相同

它允许您重用UITableViewCell类的单元格对象实例,而不是为要显示的每个联系人创建一个全新的对象

您必须实现UITableViewDelegate和UITableViewDataSource协议,才能使设置正常工作。乍一看,这些都不是很琐碎,但一旦你开始起飞,你会很快地了解到潜在的机制。我建议您从一个简单的教程开始,然后从那里开始讨论您的具体案例。

不要重新发明轮子

正如前面的发言者已经指出的,您应该使用UITableView

但你不必重新发明轮子。有很多实现都面临着这个问题

在这里,您可以找到一个很好的实现,它已经使用了UITableView 1:Objective-C,2:Swift。

它的基本功能是:

使用自定义UIView显示气泡 使用此自定义UIView可在自定义UITableViewCell中显示 使用此自定义UITableViewCell可在UITableView中显示,该UITableView可为您的任务获得高性能
您不应该在滚动视图中添加15000个按钮;这是一个糟糕的用户界面。如果你需要很多重复的项目,你应该使用表视图。我需要做一个短信应用程序。这将增加15000多个联系人。所有的联系人都应该是冒泡的。这是可能的。首先考虑使用UITababVIEW。你可以用表视图来做这件事,它只需要在屏幕上创建尽可能多的单元格。它会重复使用这些单元格,因此这比试图在滚动视图中添加15000个按钮要有效得多。但我想知道原因。。
but.frame=CGRectMake(50, j, 60, 30);