0

私の問題はとても単純です (すみません、私の英語、私はスペイン語を話します)

私は持っている

NSString *ClaseUsuario;

@property (strong, nonatomic) NSString *ClaseUsuario;

変数の値を変更するメソッドがあります

-(IBAction)setLabelEdad{
int val=(int)[botonEdad value];
if(val>0 && val<22){ClaseUsuario=@"C";}
if(val>=22 && val<35){ClaseUsuario=@"B";}
if(val>=35){ClaseUsuario=@"A";}

NSLog(ClaseUsuario);

}

しかし、私の問題は、別のメソッドから変数を呼び出すと、答えがNULLになることです

-(IBAction)VerOfertas{
NSLog(@"%@%@",@"Ofertas usario tipo: ",ClaseUsuario);   
}

上記の方法で割り当てられた値を保存する必要があります。助けてください! そしてどうもありがとう

4

1 に答える 1

1

ここで修正すべき点がいくつかあります。

プロパティには先頭の小文字を使用してください: claseUsuario. これは KVC にとって重要です。

ivar をまったく宣言しないでください。使うだけ

@syntheisze claseUsuario=_claseUsuario;

(先頭のアンダースコアに注意してください。非常に古いシステム用に作成していない限り、インスタンス変数を明示的に宣言する理由はほとんどありません。)

と を除いてinitdealloc常にアクセサを使用します。したがって、これはself.claseUsuario = @"C";. これにより、メモリ管理が正しく機能することが保証されます。

通常、NSLog次の形式にする必要があります。

NSLog(@"Ofertas usario tipo: %@", self.claseUsuario);

IBAction先頭に. を付けて名前を付けないでくださいset。これは、アクセサーのように見えるため、KVC を混乱させる可能性があります。

問題の実際の原因として考えられるのは、setLabelEdad呼び出されないか、別の場所でクリアするclaseUsuarioか、間違ったオブジェクトを見ていることです。setLabelEdadこれらをテストするためにブレークポイントを入れます。

于 2012-06-08T20:07:50.747 に答える