Objective c 类中对象的二维数组
我试图将对象的2d数组声明为类中的属性,但收到一个错误:数组的元素类型不完整Objective c 类中对象的二维数组,objective-c,Objective C,我试图将对象的2d数组声明为类中的属性,但收到一个错误:数组的元素类型不完整 @property RoundObj *rounds[][]; 不能用这种方式声明二维数组 您应该这样声明: @property RoundObj __autoreleasing **rounds; // Dynamic 但与其这样做,我建议使用NSMutableArray。您可以在另一个NSMutableArray中添加另一个NSMutableArray,并可以实现类似于二维数组的机制。这是一种更好的方法。您需要
@property RoundObj *rounds[][];
不能用这种方式声明二维数组 您应该这样声明:
@property RoundObj __autoreleasing **rounds; // Dynamic
但与其这样做,我建议使用NSMutableArray。您可以在另一个NSMutableArray中添加另一个NSMutableArray,并可以实现类似于二维数组的机制。这是一种更好的方法。您需要声明阵列的容量。您还需要将其设置为实例变量而不是属性
@interface MyClass ()
{
RoundObj *rounds[9][9];
}
@property (nonatomic, strong) NSString *someUnrelatedString;
@end
或者,您可以将NSMutableArray嵌套在更多数组中
@property (nonatomic, strong) NSMutableArray *arr;
...
_arr = [[NSMutableArray alloc] init];
for (int i = 0; i < 10; i ++)
{
NSMutableArray *newArr = [[NSMutableArray alloc] init];
[arr addObject:newArr];
}
使用NSArray不会强制执行特定类型,但可以按约定用于创建多维数组。我使用注释来指示预期的结构是什么
@property (nonatomic, strong) NSArray *rounds; //of NSArray* of RoundObj*
提供指向非常量类型“RoundObj*”的错误指针,但没有显式ownership@TarekMowafy:忘记添加自动删除。现在检查,但容量是动态的检查我的更新答案。您的RoundObj将进入每个newArr