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");
}

会回显“假”、“假”。我想我不清楚为什么会发生这种情况(因为 BOOL 是原始数据类型而不是对象)。但是处理这个问题的最佳实践是什么?

谢谢

基督教

4

2 回答 2

1

Try to add (nonatomic, assign) property modifiers

@property (nonatomic, assign) BOOL autoResize;

How it work you can read here: 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 回答