将子视图顺利添加到UiScrollView ..

时间:2009-05-25 18:49:27

标签: iphone uiscrollview

我正在尝试动态地将子视图实时添加到UiScorllView(以节省内存)。

这样做会导致scrollview暂停一下......这是怎么回事?

任何提示赞赏

2 个答案:

答案 0 :(得分:3)

了解UITableView如何解决此问题。您最大的性能点击是子视图的分配和初始绘制,但主要是分配。 UITableView使用重用标识符和内存堆来在滚动期间将其所有单元保留在内存中,这样它就可以重用已经分配的单元,而不是每次新单元滚动时重新分配新单元。可见区域。

也许你可以实现自己的子视图重用系统来节省你所有的分配时间。再次,具体阅读UITableView如何做到这一点,并为此建模。不幸的是,确实没有比我能想到的更容易的解决方案。

答案 1 :(得分:2)

我建议任何可能挂起用户界面的操作都应放在一个线程中。这样,添加子视图的过程将在后台完成,而不会干扰主线程。

您可以NSThread执行此操作,也可以实施NSOperationQueue

NSThread声明很简单;

[NSThread detachNewThreadSelector:@selector(myFunction:) toTarget:myObject withObject:argumentObject];

其中'myFunction'应该替换为函数的名称,'myObject'用一个对象(或者只是状态self,如果你想让当前的类处理线程)和'argumentObject'应该是替换为您要传递的任何对象作为参数;这可能是nil

函数本身应如下所示;

-(void)myFunction {
   NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
   // do your thing here...
   [pool release];
}

每个帖子都应该有一个自动释放池。

一个提示;如果您的子视图必须设置动画,请尝试声明UIAnimation