![](/img/trans.png)
[英]How to access an AFP or SMB share (e.g. time capsule) in Swift or Obj-C
[英]Modifying arrays (returned by getter as e.g. int**) in Obj-C
假设有一个类:
@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;
?
是。 您将返回一个指针,然后修改所指向的值。 这是完全合法的。 如果您不希望这样做,则需要向类型添加适当的const修饰符。
不合法的是返回一个结构并直接修改该结构。
正如KennyTM在评论中提到的那样,您的m_space{,1,2}
变量是全局变量,而不是您可能想要的实例变量。 解决此问题的最简单方法是将一个ivar块放在@implementation
,如
@implementation FooBar {
int m_space1[256];
int m_space2[256];
int* m_space[2] = { m_space1, m_space2 };
}
-(int **) _getSpace {
return m_space;
}
@end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.