当我通过引用CoreData管理的Object变量传递时,为什么我的原始变量没有改变?
所以我在我的iPhone应用程序中有一个名为Config的coredata托管对象。 XCode 4中产生的* .h和* .m文件中的一个变量是“@dynamic height;” (我指出这一点,因为我想知道它是否与此相关)。在代码中访问此变量时,它是NSNumber。
因此,当我设置一个新的数据选择视图/控制器时,我将此控制器中的变量设置为等于高度,这样当我在下一个视图中更改它时回来后,应该在第一个视图中进行更改(通过参考概念)。
唯一的问题是它似乎没有改变价值?
一些代码提取:
@interface Config : NSManagedObject {
@private
}
@property (nonatomic, retain) NSNumber * height;
@end
@implementation Config
@dynamic height;
@end
调用第二个视图
// Prepare
SelectorController *sc = [[SelectorController alloc] initWithStyle:UITableViewStyleGrouped];
sc.returnValue = self.config.height;
// Show New Window
[self.navigationController pushViewController:sc animated:YES];
[sc release];
部门控制器
@interface SelectorController : UITableViewController {
NSNumber *_returnValue;
}
@property (nonatomic, retain) NSNumber *returnValue;
@end
答案 0 :(得分:2)
NSNumber
是不可变的,也就是说,在创建后不能更改其值。为NSNumber
属性分配新值时,它是一个完全不同的对象,原始对象根本不会更改。