看起来像这样:
@interface PutController () <UITextFieldDelegate, NSStreamDelegate>
...
@property (nonatomic, assign, readonly) uint8_t *buffer;
...
@end
@implementation PutController
{
uint8_t _buffer[kSendBufferSize];
}
...
@end
但是当我将它复制到我的代码时,我收到一个错误:
Type of property 'buffer' ('uint8_t *' (aka 'unsigned char *')) does not match type of instance variable '_buffer' ('unsigned char [32768]')
我的代码与他们的示例完全相同,但它不会编译。这是怎么回事?
答案 0 :(得分:1)
不幸的是,虽然数组可以衰减到指针,但至少使用clang,它在属性中使用时不会自动衰减为只读指针。
解决这个问题的最简单方法是使用第二个实例变量,它只是指向数组中第一个元素的指针,并让你的属性合成到那个,如下所示:
@interface MyObj : NSObject
@property (readonly) uint8_t *buffer;
@end
@implementation MyObj {
uint8_t *_bufferPtr;
uint8_t _buffer[1024];
}
@synthesize buffer = _bufferPtr;
-(id) init {
if (self = [super init]) {
_bufferPtr = &_buffer[0];
}
return self;
}
@end
Alternativey,只需实现自己的getter实现,只需返回指向buffer
的第一个元素的指针即可。这是你的电话,真的。
这不是最佳选择,但它确实以您想要的方式运作。