The*_*imp 2 iphone objective-c nsmutablearray sigabrt
当我尝试向NSMutableArray插入一个对象时,我收到一个'Program received signal:SIGABRT'错误,但是我不明白为什么.
这是我的代码,特别insertObject:value是导致错误的代码.
NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary];
[myDictionary setValue:valueName.text forKey:kValueName];
[myDictionary setObject:subValuesList forKey:kSubValuesList];
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
int position = appDelegate.position;
NSMutableArray *valuesList = [[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray];
[valuesList insertObject:myDictionary atIndex:position];
Run Code Online (Sandbox Code Playgroud)
NSUserDefaults即使您将可变对象设置为值,返回的值也是不可变的.
从中检索数组后,您需要创建一个可变副本NSUserDefaults.幸运的是,NSArray符合NSMutableCopying协议,所以你只需要向mutableCopy数组发送一条消息:
NSMutableArray *valuesList = [[[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
请记住,您拥有mutableCopy根据内存管理规则返回的对象.换句话说,您需要在完成后释放它.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |