为什么OC数组中会出现空对象?

Why do empty objects appear in OC array?

提问人:Liu.Jinfan 提问时间:10/22/2020 更新时间:10/22/2020 访问量:87

问:

当我将一个数组分配给另一个数组时,我收到一个错误,如 P1 所示。

然后我检查了_carIDArray的内容,发现里面有一个空对象。正是这个物体导致了崩溃。小二

为什么空对象会出现在数组中?使用 addobjcet 时:数组不会崩溃吗?

以下是一些与_carIDArray相关的代码:

CarModel *car = [[CarModel alloc] initWithStatusAndMsgWithDic:object];

if (!_carIdArray) {
    _carIdArray = [NSMutableArray array];
}
if (car.carIdStr && car.carIdStr.length>0){     
    [_carIdArray addObject:car.carIdStr];
}

*object 是来自服务器的数据。

@interface CarModel : NSObject
@property (nonatomic,copy) NSString *carIdStr;
@end
iOS Objective-C Cocoa-Touch

评论

0赞 Ol Sen 10/22/2020
有 ArrayTypes 可以保存 nil 对象。NSArray 和 NSMutableArray 不能,因为 nil 在 lastObject 之后终止数组。您可以在添加对象之前检查 nil
0赞 skaak 10/22/2020
看来你检查正确了,所以我怀疑 carIdStr 在某种程度上是一个指针。但是你需要努力让它变弱,所以也许会显示信息?weak[CarModel carIdStr]
0赞 skaak 10/22/2020
嗯嗯......NSMutableArray 应该保留一个强指针,但我怀疑来自服务器,我怀疑有一些有趣的东西,您需要以某种方式复制服务器数据或将属性更改为strong
1赞 Ol Sen 10/22/2020
换句话说,当您用于初始化 CarModel 的字典不完整时会发生什么?[[CarModel alloc] initWithStatusAndMsgWithDic:nil]
0赞 skaak 10/23/2020
是的,检查员,发现得很好...... 大概是麻烦所在......请向我们展示您如何实例化以及如何使用它初始化。objectobjectCarModel

答: 暂无答案