将对象添加到NSMutableArray-奇怪的行为

时间:2019-02-20 09:21:52

标签: ios objective-c

我面临一个非常奇怪的问题。我创建了一个对象,并将其添加到NSMutableArray中,但是当我在插入它后尝试读取它时,该对象的某些子类会变为一些奇怪的类,例如

  

PINGIFAnimatedImageManager

这是我用来创建对象并将其插入NSMutableArray的代码:

CustomContentGridRow *row = [[CustomContentGridRow alloc]init];
row.child1 = [dataManager getMapLocation]; // This is the MapLocation object that will change to this weird PINGIFAnimatedImageManager
row.useFullWidth=1;
row.index=0;
[arrCustomChilds addObject:row];

这是CustomContentGridRow类:

@interface CustomContentGridRow : NSObject

@property (nonatomic, assign) MapLocation *child1;
@property (nonatomic, assign) MapLocation *child2;
@property (nonatomic, assign) int useFullWidth;
@property (nonatomic, assign) int index;

@end

因此,当我在[arrCustomChilds addObject:hotelRow];这行上设置断点时,当我读取row对象时,便得到了预期的结果。但是,当我在上述代码后放置一个断点以读取arrCustomChilds时,child1的类更改为一些奇怪的类。同样,有时它不会更改为另一个类,但会给出nil值。

知道为什么会这样吗?

3 个答案:

答案 0 :(得分:1)

您应该将类​​对象的属性修饰符从“分配”更改为“强”。否则会发生不确定的行为。

答案 1 :(得分:0)

在Xcode中->产品->方案-编辑方案。检查运行模式的设置。如果是Release,则更改为Debug。

这将为您提供正确的值

更改以下属性

@property (nonatomic, strong) MapLocation *child1;
@property (nonatomic, strong) MapLocation *child2;

指定为强人

答案 2 :(得分:0)

您的界面应为:

@interface CustomContentGridRow : NSObject

@property (nonatomic, strong) MapLocation *child1;
@property (nonatomic, strong) MapLocation *child2;
@property (nonatomic, assign) int useFullWidth;
@property (nonatomic, assign) int index;

@end

类对象应该是强壮的,不能分配