假设有一个类:
@interface FooBar : NSObject
@property(readonly, getter = _getSpace) int** space;
@end
space属性实现如下:
@implementation FooBar
int m_space1[256];
int m_space2[256];
int* m_space[2] = { m_space1, m_space2};
-(int **) _getSpace {
return m_space;
}
@end
使用:
更改int [2] [256]数组是否合法FooBar * f = [[FooBar alloc] init];
f.space[1][120] = 0;
答案 0 :(得分:3)
是。您将返回一个指针,然后修改指向的值。这是完全合法的。如果您不想允许这样,那么您需要在类型中添加适当的const修饰符。
返回结构并直接修改该结构是不合法的。
正如KennyTM在评论中提到的,您的m_space{,1,2}
变量是全局变量,而不是您可能想要的实例变量。解决此问题的最简单方法是在@implementation
中放置一个ivar块,如
@implementation FooBar {
int m_space1[256];
int m_space2[256];
int* m_space[2] = { m_space1, m_space2 };
}
-(int **) _getSpace {
return m_space;
}
@end