0

私は次の実装ファイルを持っていますMyClass

BOOL myBool;

@implementation MyClass

// ...

- (void) someMethod {
    myBool = YES;
}

@end

の1つのインスタンスで呼び出された後のすべてのインスタンスに当てはまるmyBoolようです。ただし、このように定義すると、次のインスタンスごとに一意の値があります。YESMyClasssomeMethodMyClassmyBoolMyClass

@interface MyClass ()
@property (nonatomic) BOOL myBool;
@end

上記の2つの「メンバー変数」構文の違いは何ですか?

4

1 に答える 1

4

違いは、最初のケースではメンバー変数ではなく、グローバル変数であるため、クラスの複数のインスタンス間でその値を自然に保持することです。

クラス実装ファイルでivarを宣言する場合は、次のようにすることができます。

@implementation MyClass{
   BOOL myBool;
}
...
于 2012-09-06T16:19:12.753 に答える