gpt4 book ai didi

iphone - 将许多 subview 添加到 View Controller 默认 View 是否会使我的应用程序变慢?

转载 作者:行者123 更新时间:2023-12-03 20:24:59 25 4
gpt4 key购买 nike

我有一个应用程序,我在其中创建了许多 uiview 并将它们添加到 UIViewController 的 self.view 中。我的应用程序运行速度非常慢。我正在释放所有对象并且没有内存泄漏(我运行了性能工具)。谁能告诉我是什么导致我的应用程序如此缓慢? (代码如下)

[编辑] 该数组大约有 30 个项目。 [/编辑结束]

非常感谢!

这是我的 UIViewController 的 loadView 方法的代码:

- (void)loadView {

UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
[contentView release];



int length = 0;
for(NSString *item in arrayTips)
{
length++;
[item release];
}
int index = 0;
for(NSString *item in arrayTitles)
{
SingleFlipView *backView = [[SingleFlipView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];



backView.userInteractionEnabled = YES;
backView.backgroundColor = [UIColor whiteColor];
[backView setViewIndex:index];
[backView setLastViewIndex:length];
CGRect labelFrame = CGRectMake(10.0f, 0.0f, 300.0f, 30.0f);
UILabel *backLabel = [[UILabel alloc] initWithFrame:labelFrame];
backLabel.textAlignment = UITextAlignmentCenter;
backLabel.userInteractionEnabled = YES;
backLabel.text = item;
backLabel.font = [UIFont fontWithName:@"Georgia" size:24.0f];
backLabel.textColor = [UIColor blackColor];
backLabel.backgroundColor = [UIColor whiteColor];

CGRect textFrame = CGRectMake(10.0f, 30.0f, 300.0f, 110.0f);
UITextView *tbxView = [[UITextView alloc] initWithFrame:textFrame];
tbxView.textAlignment = UITextAlignmentCenter;
tbxView.userInteractionEnabled = YES;
tbxView.editable = FALSE;
tbxView.text = [arrayTips objectAtIndex:index];
tbxView.font = [UIFont fontWithName:@"Arial" size:14.0f];
tbxView.textColor = [UIColor blackColor];
tbxView.backgroundColor = [UIColor whiteColor];

//CGRect labelFrame = CGRectMake(10.0f, 0.0f, 84.0f, 30.0f);
UIImage *nextTip = [[UIImage imageNamed:@"NextTip.png"] retain];
UIImageView *nextTipView = [ [ UIImageView alloc ] initWithImage:nextTip];
nextTipView.frame = CGRectMake(230.0f, -10.0f, 84.0f, 30.0f);
nextTipView.userInteractionEnabled = YES;


UIImageView *view = [[ UIImageView alloc ] init];
view.userInteractionEnabled = YES;
if(self.sexString == @"Men")
{
UIImage *imgTip = [[UIImage imageNamed:@"feet_small.jpg"] retain];
view.image = imgTip;
view.frame = CGRectMake(0.0f, 110.0f, 416.0f, 228.0f); //59*161
[imgTip release];
}

[backView addSubview:view];
[backView addSubview:tbxView];
[backView addSubview:backLabel];
//[backView addSubview:nextTipView];

[self.view addSubview:backView];
[backView release];
[backLabel release];
[nextTip release];
[nextTipView release];
[tbxView release];
[view release];

index++;

[item release];
}


}

最佳答案

这将取决于 arrayTitles 中有多少项。如果您只是添加其中一两个,您不应该看到巨大的减速;更多,你就会的。您可能应该看一下 UITableView 处理其单元格的方式;仅在实际需要/使用时创建它们,或者更好的是,仅创建其中之一,并即时设置其内容。

其他一些注意事项:

  • == 不是 Objective-C 中有效的字符串比较运算符;使用 [string1 isEqualTo: string2]
  • 看来您正试图同时在屏幕上放置很多这样的内容,这似乎没有多大意义。
  • 看起来你在最后有一个虚假的[item release](你永远不会保留item,所以没有必要释放它。
  • 整个第一个循环( for(NSString *item in arrayTips)... 让我感到害怕和困惑;NSArrays 中的项目已经由数组保留。您不必显式保留/以这种方式释放它们。

关于iphone - 将许多 subview 添加到 View Controller 默认 View 是否会使我的应用程序变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com