что не так с NSNumber - PullRequest
       10

что не так с NSNumber

1 голос
/ 27 марта 2011

я написал этот код:

bs = [NSNumber numberWithFloat:[mystring.text floatValue]];
NSLog(@"bs = %@",bs);

....

float x = [bs floatValue];

когда программа хочет простить строку над ней сбой, почему?

вывод: bs = 2,8, что правда 100%

Ответы [ 2 ]

2 голосов
/ 27 марта 2011

Между тем, как вы присвоили объекту NSNumber свой ivar, он был выпущен во время выполнения. Я предполагаю, где вы создали bs и где вы пытаетесь присвоить его x двумя разными способами. Если это так, вам нужно сообщить среде выполнения, что вы хотите, чтобы ivar bs оставался на некоторое время:

[bs retain];

И если вы это сделаете, вам нужно сообщить среде выполнения, что вы закончили в dealloc:

-(void)dealloc {
    [bs release];
    [super dealloc];
}

По сути, если вы не создали объект с помощью alloc, copy, mutableCopy, new в имени метода, то вы не являетесь владельцем объекта.

1 голос
/ 27 марта 2011

фрагмент кода выглядит нормально. и я думаю, причина в том, что bs был выпущен до получения значения с плавающей точкой. Самый простой способ retain bs - изменить его на свойство:

@property (nonatomic,retain)NSNumber* bs;

и release это в dealloc

...