gpt4 book ai didi

ios - NSMutableArray ReplaceObjectAtIndex 崩溃

转载 作者:行者123 更新时间:2023-11-29 00:10:21 26 4
gpt4 key购买 nike

我使用 xcode 9

NSMutableArray *Upcase_Keys = @[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]; 
NSString *str = [Upcase_Keys objectAtIndex:0];
str = @"test";
[Upcase_Keys replaceObjectAtIndex:0 withObject:str];

获取 NSMutableArray 的特定数据

它会转换值并覆盖现有索引。

但是,此代码会导致崩溃。

我做错了什么?

最佳答案

NSMutableArray replaceObjectAtIndex Crash

所以控制台应该有错误。控制台会在 99% 的崩溃情况下为您提供帮助,请阅读它!它应该类似于 -[NSArrayI ReplaceObjectAtIndex:withObject:] 无法识别的选择器发送到实例。这是你错误的重要部分。 NSArrayI 表示 NSImmutableArray (换句话说,NSArray),它不是一个 NSMutableArray ,这表明问题是关于 Upcase_Keys 的创建。

那为什么呢?因为 @[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]; 这是 NSArray 的简写语法,而不是 NSMutableArray。因此,即使它被声明为 NSMutableArray,该对象实际上也是一个 NSArray。事实上,如果您愿意听 XCode,它应该会给您以下警告:

Incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'

这与之前所说的一致。`有时 XCode 可能是错误的,但请尝试听一下。

调用有几种可能:

NSMutableArray *Upcase_Keys = [NSMutableArray arrayWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [[NSMutableArray alloc] initWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"] mutableCopy];

最后,建议使用驼峰命名法:避免用大写字母命名您的 var。第一个字母使用小写。我想说在 _ 之后问题较少,但我们倾向于在 iOS 中这样写。

Upcase_Keys => upcase_Keys => upcaseKeys

关于ios - NSMutableArray ReplaceObjectAtIndex 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com