gpt4 book ai didi

Objective-C setter 二维数组

转载 作者:行者123 更新时间:2023-12-04 03:16:24 27 4
gpt4 key购买 nike

我想初始化一个二维数组..但我的代码不起作用,

谁能告诉我出了什么问题吗?

谢谢克里斯

@interface Map : NSObject {
int mapData[8][8];
}
@property(readwrite) int** mapData;
@end


@implementation Map
@synthesize **mapData; (Error: Syntax before *)

- (id)initWithMap:(int[8][8])map {

for (int i=0; i<8; i++) {
for (int j=0; j<8; j++) {
self.mapData[i][j] = map[i][j];
}
}
return self;
}

@end

(Warning mapData requires method... use @synthesize or.......)

编辑:如果我按照建议删除合成时的类型,编译器会告诉我另一个错误:属性mapData的错误类型与ivar mapData的类型不匹配

编辑#2:有人可以发布更正后的代码吗?我正在解决这个非常愚蠢的问题一个多小时..(没有c/c++背景,但是java)

最佳答案

还有

int mapData[8][8];

int **mapData;

的解释不同。第一个是包含 64 个连续 int 的数组,另一个是指向 int 的指针。

也许这对你有用,将二维数组包装在结构中......

struct map_s {
int map[8][8];
};
typedef struct map_s map_t;

@interface Map : NSObject {
map_t mapData;
}
@property (nonatomic, readwrite) map_t mapData;
@end


@implementation Map
@synthesize mapData;

- (id)initWithMap:(map_t)map {
int i, j;
for (i=0; i<8; i++) {
for (j=0; j<8; j++) {
self.mapData.map[i][j] = map.map[i][j];
}
}
return self;
}

@end

稍微重写以显示 map 初始值设定项

struct map_s {
int map[8][8];
};
typedef struct map_s map_t;

@interface Map : NSObject {
map_t mapData;
}
@property (nonatomic, readwrite) map_t mapData;
- (void)init;
- (id)initWithMap:(map_t)map;
@end


@implementation Map
@synthesize mapData;

- (void)init
{
map_t first = {
{
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0 }
}
};
[self initWithMap:first];
}

- (id)initWithMap:(map_t)map {
mapData = map;
return self;
}

@end

关于Objective-C setter 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com