ARC中的分配

时间:2014-12-30 06:52:17

标签: ios objective-c uitableview uiscrollview

我面临一个问题,即在ARC启用项目中,如果通过调整其y位置添加按钮来滚动视图,则分配显示为50%。但在ARC中它不应该正确显示。 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]; 
 }

这里我获得了50%的分配。

but.frame=CGRectMake(50, j, 60, 30);

2 个答案:

答案 0 :(得分:1)

正如评论中所提到的,设置不适合您的上下文。

由于实际使用了15000个UIButton对象,因此使用了大量内存,因此您的应用速度变慢了。

你说你需要拥有这么多实例,因为你正在为联系人做一些列表。这正是UITableViewUITableViewController的用例(它与Apple在其预装的应用程序中使用的UI控件相同)。

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

您必须实施UITableViewDelegateUITableViewDataSource协议才能使设置生效。这些并非琐事乍一看,但是一旦你开始起飞,你就会很快熟悉底层机制。我建议你从一个简单的教程开始,然后从那里继续你的特定情况。

答案 1 :(得分:0)

不要重新发明轮子!

正如之前的发言者已经指出的那样,你应该使用UITableView

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

在这里你可以找到一个已经使用UITableView(1:Objective-C,2:Swift)的好实现。 SSMessagesViewController

Acani Chats

它基本上是做什么的:

  • 使用自定义UIView显示“气泡”
  • 使用此自定义UIView显示在自定义UITableViewCell
  • 使用此自定义UITableViewCell显示在UITableView中,以便为您的任务获得高性能