2011-05-11 73 views
0

如何声明一个字符数组,以便在该类内定义的所有函数都可以将其与更新后的值一起使用。在界面中找不到属性'pData'的声明 - 目标C

在@synthesize定义中定义char数据[4096]时出错。

@interface A: NSObject 
{ 
char data[4096]; 
} 
@property(nonatomic,retain)char data; 
@end 
@implementation A 
@synthesize data 
@end 

我得到“财产无申报‘的pData’在界面中找到”

+0

类变量是一个数组,但属性定义是一个字符。 – onnoweb 2011-05-11 15:08:35

回答

2

不知道为什么你得到这个错误,但几件事情是在你的代码显然是错误的:

  1. data它的实例变量和属性有不同的类型。财产申报应该是

    @property(nonatomic) char[4096] data; 
    
  2. 您必须只能使用OBJ-C类型的属性保留属性,对于普通的C-类型使用分配(或不指定任何为分配默认情况下使用)

  3. 暴露你的指针直接CHAR到变化可能不是一个好主意 - 好让你的属性只读,并且作出特别的方法来更改其内容:

    @property(nonatomic, readonly) char[4096] data; 
    - (void) changeData:...//some parameters here 
    

P.S.可以考虑使用NSString*(或NSMutableString*)而不是char []?

P.P.S.或者如果你只是存储一些随机字节数据考虑使用NSData/NSMutableData。 (谢谢@ bbum暗示)

+1

4.为什么不使用'NSData'?它被明确设计为容纳一包任意字节。 – bbum 2011-05-11 15:26:10

+0

@bbum。你说得对,NSString在我心目中只是作为一个关联而出现。 – Vladimir 2011-05-11 15:31:43

+0

谢谢你清楚地解释我。 – Angus 2011-05-12 05:22:56