【问题标题】:What is wrong with this code implementation? Objectice-c, IOS这个代码实现有什么问题? Objective-c, IOS
【发布时间】:2019-11-06 17:03:02
【问题描述】:

测试 NSData、NSMutableData 和字节方法和字节类型变量之间的关系想要将 NSData 值更改为字节,当我运行它时它会导致应用程序崩溃但不会抛出任何错误..

运行正常

NSData *myData = [[NSData alloc] initWithData:someData];
Byte *finalValue = (Byte *)[myData bytes];

但这会引发应用程序崩溃并且不会引发错误

NSData *myData = [[NSData alloc] initWithData:someData];
NSMutableData *testingWaters = (NSMutableData *)[myData bytes];
Byte *finalValue = (Byte *)[testingWaters bytes];

已编辑:请记住,我想将 NSData 变量或 NSMutableData 变量转换为 Byte 变量。

【问题讨论】:

  • 哪条线路崩溃了?
  • 控制台没有错误?你应该有一个无法识别的选择器发送到实例,不是吗?
  • 初始化 testingWaters 时发生崩溃
  • @Larme 控制台没有错误,我希望能得到一个,所以它给了我一个提示,但它只是崩溃了。

标签: objective-c type-conversion byte nsdata


【解决方案1】:

您可以创建 myData 的可变副本

    NSData* someData = [[NSString stringWithFormat:@"HELLO WORLD"]dataUsingEncoding:NSUTF8StringEncoding];

    NSData *myData = [[NSData alloc] initWithData:someData];
    NSMutableData *testingWaters = (NSMutableData *)[myData mutableCopy];

    Byte *finalValue = (Byte *)[testingWaters bytes];

【讨论】:

  • 我可以从创建数据的可变副本中得到什么?
  • 数据将以可变类型存储,例如您可以向其附加更多数据等。您可以将该方法用于 NSArray 等其他类型,以创建一个可变副本 (NSMutableArray),您可以根据需要对其进行编辑,执行添加、删除等操作。如果它不可变,您将无法对其进行编辑,您可以像使用常量一样使用它。
  • 好的,谢谢,将来会考虑实施它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 2015-02-23
相关资源
最近更新 更多