だから私はここで何が間違っているのか分かりません。私のクラスには、基本的に 2 つのプロパティがあります。
@property (nonatomic, retain) NSString *name;
@property (nonatomic, readonly) BOOL isValid;
ロジックは、名前が nil でない場合は isValid=YES、それ以外の場合は NO であると想定されています。だから私はそれを次のように書きました:
- (BOOL)isValid {
if (self.name) // breakpoint was set here.
return YES;
else
return NO;
}
説明を印刷すると、逆の効果が得られます。理由がわからない。このためにデバッガーをステップスルーしようとしました。このメソッドで停止し、自分自身の値を見ると、name
プロパティを見ると値が nil です。しかし、ステップインした直後、デバッガーが return NO ステートメントにあるときname
、正しい値が設定されたプロパティがあります。
その条件に基づいてオブジェクトが作成されたときに isValid フラグを設定するだけでよいと思いますが、self.name が nil であるかどうかを読み取ることができれば、その必要はないと思いました。誰でもこれをトラブルシューティングする方法について何か考えがありますか? ありがとう。
編集: 私のスーパークラスは NSObject です。
この同じクラスには、本質的に同じタイプのロジックを持つ 2 つのプロパティがあります。
@property (nonatomic, retain) NSString *AA;
@property (nonatomic, readonly) BOOL isCodingRegion;
- (BOOL)isCodingRegion {
if (self.AA) {
return YES;
}
else {
return NO;
}
}
そして、このロジックは機能します。