Вам, вероятно, нужен полный тип, т.е.
@property (неатомный) BOOL boolArray [100] ;
[100] - это важная информация о типе, а не просто указание того, сколько места нужно выделить.
Кроме того, я думаю, что свойство будет обрабатываться как const BOOL *
, которое не может быть назначено, поэтому, вероятно, оно должно быть readonly
. Правильнее всего сделать это, вероятно, только для чтения, что означает, что thins будет извлекать указатель массива, а затем индексировать его для назначения членам массива.
В качестве альтернативы вы можете использовать NSArray
для этого, но для этого потребуется, чтобы вы использовали NSNumber
s с boolVaules, с которым приходится иметь дело больше с биотчем.
UPDATE
На самом деле глупому компилятору не нравится [] по некоторым причинам. Попробуйте это:
@interface TestClass : NSObject {
const BOOL *boolArray;
}
@property (nonatomic, readonly) const BOOL *boolArray;
@end
@implementation TestClass;
- (const BOOL *)boolArray {
if (!boolArray)
boolArray = malloc(sizeof(BOOL) * 100);
return boolArray;
}
- (void)dealloc {
[super dealloc];
free((void *)boolArray);
}
@end
ДРУГОЕ ОБНОВЛЕНИЕ
Это компилируется:
@interface TestClass : NSObject {
BOOL boolArray[100];
}
@property (nonatomic, readonly) const BOOL *boolArray;
@end
@implementation TestClass;
- (const BOOL *)boolArray {
return boolArray;
}
@end
Это странная проблема. Хотелось бы, чтобы компилятор объяснил, что именно ему не нравится, например: «Не удается объявить свойство с типом массива» или что-то в этом роде.
ЕЩЕ ДРУГОЕ ОБНОВЛЕНИЕ
Смотрите этот вопрос: Создайте свойство целых чисел в Objective C
Очевидно, в соответствии со спецификацией C, массив не является типом «Обычные старые данные», а спецификация Objective-C позволяет объявлять свойства только для типов POD. Предположительно, это определение POD:
http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html
Но чтение того, что кажется массивом POD, является POD. Так что я не понимаю.