2011-04-04 65 views
0

我有一個類說ABC,我必須將ABC類型的2維數組初始化爲另一個類。我對目標C不好。嘗試了很多方法,但面臨一些錯誤。在另一個類中初始化一個類的二維數組

這裏是----- ABC類------

@interface ABC : NSObject{ 
int a; 
} 
@property (nonatomic, assign) int a; 

@end 

@implementation ABC 

@synthesize a; 

@end 

這裏是另一個班說XYZ其中ABC類需要被intialized:

------類XYZ -----

@interface XYZ : UIView { 

ABC *abc[16][16]; 
} 
@property (nonatomic, retain) ABC *abc; 
@end 

@implementation XYZ 
@synthesize *abc[16][16]; 
@end 

請建議什麼可能是正確的初始化語法。我每次嘗試初始化時都會收到各種錯誤。

+0

您可能會閱讀關於發佈代碼的堆棧溢出常見問題的這一部分。有可能你得到的錯誤是語法錯誤。發佈您收到的錯誤,並編輯您的問題以修復代碼格式:http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks – 2011-04-04 22:56:00

+0

如http:// developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html,聲明的屬性不支持C風格的數組。 – 2011-04-05 05:34:26

回答

0

如果你想用C (即ABC *abc[16][16]),您需要在您的XYZ類中提供訪問器方法。

@class ABC; 

@interface XYZ : NSObject 
{ 
    ABC *abc[16][16]; 
} 
- (void)setABC:(ABC *)anABC atRow:(NSUInteger)row column:(NSUInteger)column; 
- (ABC *)abcAtRow:(NSUInteger)row column:(NSUInteger)column; 
@end 

@implementation XYZ 

- (void)setABC:(ABC *)anABC atRow:(NSUInteger)row column:(NSUInteger)column 
{ 
    [anABC retain]; 
    [abc[row][column] release]; 
    abc[row][column] = anABC; 
} 

- (ABC *)abcAtRow:(NSUInteger)row column:(NSUInteger)column 
{ 
    return abc[row][column]; 
} 

- (void)dealloc 
{ 
    NSUInteger row, column; 
    for (row = 0; row < 16; row++) 
     for (column = 0; column < 16; column++) 
     [self setABC:nil atRow:row column:column]; 

    [super dealloc]; 
} 

@end 
0

您不能使用性能的影響[]數組類型在XYZ - 你可以做什麼是創建一個NSArray或類似容器,並以這種方式創建多維數組