Fra*_*984 3 xcode objective-c nsstring nsmutablestring
在连接一个大字符串时,我得到一个EXEC_BAD_ACCESS.
我从一个feed读取并创建我的webview我建立了我的字符串,如:
NSString *pageData = @"<h1>header</h1>";
pageData = [pageData stringByAppendingFormat@"<p>"];
pageData = [pageData stringByAppendingFormat@"self.bodyText"];
pageData = [pageData stringByAppendingFormat@"</p>"];
etc
Run Code Online (Sandbox Code Playgroud)
我得到的问题是self.bodytext是21,089个字符,当我对字进行计数时有空格.这样做有更好的方法吗?
谢谢
您肯定希望使用NSMutableString这样的事情:
NSMutableString * pageData = [NSMutableString stringWithCapacity:0];
[pageData appendFormat:@"<h1>header</h1>"];
[pageData appendFormat:@"<p>"];
...
Run Code Online (Sandbox Code Playgroud)
NSMutableString是为这种顺序连接而设计的,其中基本的NSString类实际上并不意味着以这种方式使用.每次调用时stringByAppendFormat:,您的原始代码实际上会分配一个新的NSString ,然后继续将已经附加的所有数千个字符复制到其中.这可能很容易导致内存不足错误,因为随着您添加越来越多的调用,临时字符串的大小将呈指数级增长.
使用的NSMutableString当你调用不会重新复制所有的字符串数据appendFormat:,因为可变的字符串维护一个内部缓冲区,只是到它的结束大头针新的字符串.根据字符串的大小,您可能希望提前保留大量内存(为...WithCapacity:参数使用有意义的数字).但除非你遇到性能问题,否则没有必要走这条路.
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |