почему моя исходная переменная не изменяется при передаче по ссылке переменной управляемого объекта CoreData? - PullRequest
0 голосов
/ 11 июля 2011

почему моя исходная переменная не изменяется, когда я передаю по ссылке переменную управляемого объекта CoreData?

Итак, в моем приложении для iPhone есть управляемый объект coredata с именем Config. Одной из переменных в XCode 4, созданных в файлах * .h и * .m, является "@dynamic height;" (Я указываю на это, потому что мне интересно, связано ли это с этим). При обращении к этой переменной в коде это NSNumber.

Поэтому, когда я настраиваю новый вид / контроллер выбора данных, я устанавливаю переменную в этом контроллере равной высоте, так что, когда я изменяю ее в следующем виде и возвращаюсь, она должна быть изменена в первом представлении ( пройти мимо концепции ref).

Единственная проблема в том, что она не меняет значение?

Некоторые выдержки из кода:

@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

1 Ответ

2 голосов
/ 11 июля 2011

NSNumber является неизменным, то есть вы не можете изменить его значение после его создания.Когда вы присваиваете новое значение свойству NSNumber, это совершенно другой объект, и исходный объект вообще не изменяется.

...