J'ai une classe qui exécute la méthode suivante (un getter):Aide avec une méthode qui retourne une valeur en exécutant la méthode d'un autre objet
// the interface
@interface MyClass : NSObject{
NSNumber *myFloatValue;
}
- (double)myFloatValue;
- (void)setMyFloatValue:(float)floatInput;
@end
// the implementation
@implementation
- (MyClass *)init{
if (self = [super init]){
myFloatValue = [[NSNumber alloc] initWithFloat:3.14];
}
return self;
}
// I understand that NSNumbers are non-mutable objects and can't be
// used like variables.
// Hence I decided to make make the getter's implementation like this
- (double)myFloatValue{
return [myFloatValue floatValue];
}
- (void)setMyFloatValue:(float)floatInput{
if ([self myFloatValue] != floatInput){
[myFloatValue release];
myFloatValue = [[NSNumber alloc] initWithFloat:floatInput;
}
@end
Quand je souris sur l'objet myFloatValue pendant le débogage, il n'a pas contenir une valeur. Au lieu de cela, il est dit: "hors de portée".
Je voudrais être en mesure de faire ce travail sans utiliser @property
, en utilisant autre chose que NSNumbers, ou d'autres changements majeurs puisque je veux juste comprendre les concepts en premier. Plus important encore, j'aimerais savoir quelle erreur j'ai apparemment faite.