2

我有以下代码:

const content: NSString = NSString.stringWithString(data);
console.log("content#1: " + content);
const nsData: NSData = content.dataUsingEncoding(NSUTF8StringEncoding);
console.log("nsData#1: " + nsData);
console.log("nsData#2: " + nsData.base64EncodedStringWithOptions(null));
NSString.new().initWithDataEncoding(nsData, NSUTF8StringEncoding)
  1. “数据”是一个包含“DetErHemmeligt”的打字稿字符串
  2. 第 2 行打印出“DetErHemmeligt”
  3. 第 4 行总是打印出“<44657445 7248656d 6d656c69 6774>”
  4. 5号线也可以
  5. 第 6 行崩溃,没有错误记录,我在这里尝试了很多东西,比如“initWithBytesLengthEncoding”,但它一直在为我崩溃,我不知道为什么。

有任何想法吗?

4

1 回答 1

0

在我看来,您在这里通过 NativeScript 编写 Objective-c 代码,这将转换为:

[[NSString new] initWithData:nsData encoding:NSUTF8StringEncoding];

这个问题是你的对象已经被初始化了。Objective-c 中的new调用实际上是 follow allocby 的简写init

[[[NSString alloc] init] initWithData:nsData encoding:NSUTF8StringEncoding];

由于您不能init两次使用对象,因此您的应用程序崩溃了。相反,请尝试使用alloc.

NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);
于 2018-09-10T20:40:54.397 回答