原始数据类型的Objective-C属性

时间:2012-08-30 09:31:10

标签: objective-c properties

有类似的东西

@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。 E.g:

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

会回应“假”,“假”。我想我有一个含糊不清的原因(因为BOOL是原始数据类型而不是对象)。但处理这个问题的最佳做法是什么?

由于

基督教

2 个答案:

答案 0 :(得分:1)

尝试添加(非原子,赋值)属性修饰符

@property (nonatomic, assign) BOOL autoResize;

如何运作,你可以在这里阅读:Declared Properties

答案 1 :(得分: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提示。

再见      基督教