2010-01-23 25 views
2

我在嘗試合成一個布爾值數組這樣當編譯器錯誤:iPhone SDK合成BOOL陣列

// .h 

#import <UIKit/UIKit.h> 


@interface SomeViewController : UIViewController { 

    BOOL boolArray[100]; 
} 

@property (nonatomic) BOOL boolArray; 

@end 


//m 

#import "SomeViewController" 


@implementation SomeViewController 

@synthesize boolArray; 

@end 

我大概做了一個根本性的錯誤,但我能找到它,現在,與boolArray [100合成]也沒有工作。

回答

0

您可能需要完整的類型,即 @property(nonatomic)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 

這是一個奇怪的問題。我希望編譯器能夠準確解釋「不能用數組類型聲明屬性」之類的令人不快的事情。

另一個UPDATE

看到這個問題:Create an array of integers property in Objective C

顯然,根據C時的參數,數組是不是一個「普通舊數據」類型和Objective-C的規範只允許聲明POD類型的屬性。據說,這是豆莢definiition:

http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html

但是看完這看上去好像是莢果的陣列是一個POD。所以我不明白。

+0

然後我得到一個「錯誤的屬性聲明」編譯器錯誤 – scud 2010-01-23 19:40:47

+0

這是一個非常糟糕的編譯器錯誤....好吧,請參閱更新。 – Nimrod 2010-01-23 19:43:22

+0

好吧,我會切換,只是使用NSArray - 感謝您的建議 – scud 2010-01-23 19:46:35