n.e*_*ind 1 iphone cocoa-touch objective-c nsmutablearray
我在我的应用程序中有一个NSMutableArray,我这样启动:
H-FILE
NSMutableArray *noteBookContent;
@property (nonatomic, retain) NSMutableArray *noteBookContent;
Run Code Online (Sandbox Code Playgroud)
M-FILE
@synthesize noteBookContent;
Run Code Online (Sandbox Code Playgroud)
然后我有一个方法,我打开一个txt文件并将其内容读入临时NSString并将此NSString切片到不同的位,然后将其放入NSMutableArray.像这样:
NSString *tempTextOut = [NSString stringWithContentsOfFile:filePath
encoding:NSUTF8StringEncoding
error:&error];
self.noteBookContent = [[[tempTextOut componentsSeparatedByString: @"\n[DIVIDER]\n"] mutableCopy] autorelease];
Run Code Online (Sandbox Code Playgroud)
我的大问题是如果我重复相同的过程几次会发生什么.在我将新数据读入之前是否需要发布noteBookContent?是否存在数据混乱的可能性,例如,如果一个noteBookContent有10个项目(全部称为FRUIT)而下一个noteBookContent有5个项目(全部称为SALAD),我最终可能会得到SALAD,SALAD,SALAD,SALAD,SALAD,水果,水果,水果,水果等?
很抱歉,如果这很明显,但我真的不明白当我将新数据读入已包含旧数据的NSMutableArray时会发生什么.
谢谢你的解释!
在这种情况下,您实际上并没有更改数组的内容 - 您正在完全替换对象.noteBookContent
NSMutableArray实例的旧值由属性赋值(the .noteBookContent = ...
)释放,并替换为由-mutableCopy
调用创建的新的单独NSMutableArray .一种更有效的方法是:
[self.noteBookContent removeAllObjects];
[self.noteBookContent addObjectsFromArray:[tempTextOut componentsSeparatedByString: @"\n[DIVIDER]\n"]];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
359 次 |
最近记录: |