1

このようなものを持って

@interface MyClass : UIImageView {
   BOOL autoResize;
}
@property BOOL autoResize;
@end

次のようなオブジェクトの配列を作成します。

MyClass* o1 = [[MyClass alloc] init];
o1.autoResize = true;
[myArray addObject:o1];

MyClass* o2 = [[MyClass alloc] init];
o2.autoResize = false
[myArray addObject:o2];

問題は次のとおりです。イテレータを使用してすべてのオブジェクトを反復処理すると、myObject.autoResize allways(!) は false を返します。例えば:

for (MyClass elem in myArray) {
    elem.autoResize ? NSLog(@"true") : NSLog(@"false");
}

「false」、「false」をエコーし​​ます。これが発生する理由は漠然としていると思います (BOOL はプリミティブ データ型であり、オブジェクトではないため)。しかし、この問題に対処するためのベストプラクティスは何ですか?

ありがとう

キリスト教徒

4

2 に答える 2

1

(非アトミック、割り当て) プロパティ修飾子を追加してみてください

@property (nonatomic, assign) BOOL autoResize;

ここで読むことができる仕組み: Declared Properties

于 2012-08-30T09:49:50.850 に答える
0

ごめんなさい!これは、ここに投稿する前にコードを再検討する必要がある理由の完璧な例でした...実際、私がしたことは次のとおりです。

MyClass* o1 = [[MyClass alloc] init];
o1.autoResize = true;
[myArray addObject:o1];

myArray = [[NSMutableArray alloc] init];  // OMG! What is this doing here :-(

MyClass* o2 = [[MyClass alloc] init];
o2.autoResize = false
[myArray addObject:o2];

何十ものオブジェクトがあったので、この行を見落としていました...ヒントをくれた@Carl Veazeyに感謝します。

さようならクリスチャン

于 2012-08-30T10:35:00.413 に答える