ios - 带有 UI 对象的 NSArray(性能)

标签 ios objective-c performance uiwebview nsarray

我有一个 NSArray(实际上是一个可变数组),每个索引中都有一个 UIWebView 对象。我使用此数组填充 UITableView 中的单元格。我使用 for 循环来初始化数组中的每个对象,如下所示:

for (int i = 0; i < [self.events count]; i++) {

    [self.uiWebViewArray addObject:[[UIWebView alloc] init]];
    [[self.uiWebViewArray objectAtIndex:i] setUserInteractionEnabled:NO];
    [[self.uiWebViewArray objectAtIndex:i] loadHTMLString:HTMLContent baseURL:nil];   
}

此时我还没有填充 UITableViewCells

虽然它有效,但我认为这是一种糟糕的方法。当我增加单元格数量时,性能会下降。在某些时候,用户可能会注意到延迟。

我还尝试用 UIWebView 直接填充每个单元格,但这基本上是一样的。

有没有人建议以有效的方式解决用 UIWebView 对象填充 UITableViewCell 的问题?

非常感谢任何帮助。

最佳答案

问题不在于数组,而在于 webview 速度非常慢且占用大量内存。
如果您想使用基本 CSS 显示 HTML 文本并且您正在部署 >= iOS7,则应该使用 NSAttributeString 和该方法:

NSDictionary *importParams = @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding) };
    NSError *error = nil;
    NSData *stringData = [HTML dataUsingEncoding:NSUTF8StringEncoding] ;
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:stringData options:importParams documentAttributes:NULL error:&error];

或者您可以使用第三方库 DTCoreText就是其中之一。

关于ios - 带有 UI 对象的 NSArray(性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856831/

相关文章:

ios - 如何从 UILabel 的第 n 行获取文本/字符串?

objective-c - 是否可以将结果存储在 vDSP 框架中的输入向量之一中

objective-c - 单元测试、STAssertThrows 和 NSExceptions

c# - List<T> 是否在 foreach 的 C# 中创建垃圾

performance - NHibernate 在网上银行应用程序上的性能

ios - 仅针对选定/突出显示的值显示圆圈

iphone - CGAffineTransformMakeRotation 总是逆时针旋转

algorithm - 除了使用循环展开之外,还有其他优化向量矩阵乘法的方法吗?

ios - UIWebView WebCore TimerBase 仅在 11.3 (15E216) : SIGTRAP WebCore _ZN7WebCore9TimerBaseD2Ev 上崩溃

ios - Objective-C 通过引用传递与通过指针传递。有什么不同?为什么我们需要它?