试图理解NSString :: initWithBytes

McP*_*gma 2 objective-c nsstring

我正在尝试将遗留C++程序转换为objective-C.该程序需要256个可能的ASCII字符数组(每个字符8位).我正在尝试使用这种NSString方法initWithBytes:length:encoding:.不幸的是,当编码如下所示时,它会崩溃(尽管它会编译).

NSString*     charasstring[256];
unsigned char char00;
int           temp00;
    for (temp00 = 0; temp00 <= 255; ++temp00)
        {
        char00 = (unsigned char)temp00;
        [charasstring[temp00] initWithBytes:&char00 length:1 encoding:NSASCIIStringEncoding]; 
        }
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

bbu*_*bum 9

首先,方法很简单,initWithBytes:length:encoding而不是NSString::initWithBytes你在标题中使用的方法.我之所以指出这一点,只是因为忘记C++中您所知道的一切是您使用Objective-C取得成功的第一步.;)

其次,您的代码表明您不了解Objective-C或使用Foundation API.

  • 你没有在任何地方分配NSString的实例

  • 你声明了一个256个NSString实例指针的数组,可能不是你想要的

  • 正确编码的ASCII字符串不包括所有字节

我建议你从这里开始.

  • 如果你把它当作侮辱,我道歉.它本来不是.代码是远离基础的,从Objective-C介绍文档开始将是一个有效的时间使用.关于忘记C++的评论也是非常有意的; 我已经教了Objective-C 20年了,最困难的学生是基于C++(或其他语言)行为做出假设的学生. (4认同)
  • 他的观点是有效的,你现在拥有的代码有他列出的问题. (2认同)