Цель C: некоторые NSString не превращаются в NSCFString - PullRequest
2 голосов
/ 13 января 2011

Привет, у меня есть проблема, я объявил и инициализировал 3 переменные NSString

static NSString* accidtest;
static NSString* accnumber;  
static NSString* accprefix;

позже в программе

[[accidtest initWithString:@"0293749372920383"]freeWhenDone:NO]; 
[[accnumber alloc] init];
[[accprefix alloc] init];

И я дал им значение из xml вот так

accnumber = string;
accprefix = string;

но в конце концов, когда я захочу использовать их, я обнаружил проблему, заключающуюся в том, что только один номер превратится в NSCFString и сохранит его значение, другие находятся вне области действия.

спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 13 января 2011

это более правильно:

/* these initialize to nil */
static NSString* accidtest;
static NSString* accnumber;
static NSString* accprefix;

/* ... */

/* ??? freeWhenDone */
assert(nil == accidtest); /* make sure we aren't creating twice, leaking the previous assignment */
accidtest = [[NSString alloc] initWithString:@"0293749372920383"];

assert(nil == accnumber); /* make sure we aren't creating twice, leaking the previous assignment */
accnumber = [[NSString alloc] initWithString:string];

assert(nil == accprefix); /* make sure we aren't creating twice, leaking the previous assignment */
accprefix = [[NSString alloc] initWithString:string];
1 голос
/ 13 января 2011

Вы пытаетесь вызвать -alloc для неинициализированной переменной.Это не имеет никакого смысла, и компилятор должен кричать на вас за это.Вместо этого у вас должно быть что-то вроде

accidtest = [[NSString alloc] initWithString:@"0293749372920383"];
accnumber = [[NSString alloc] init]; // what's the point of this? Equivalent to @""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...