我已经查看了其他 SO 讨论,但似乎找不到答案。在基本上以下代码之后,我得到了这个答案:
1) 在拥有 AwesomeMenu 的类中,我正在制作 AwesomeMenuItems 的 NSMutableArray,这是初始化 AwesomeMenu 所必需的:
NSMutableArray *menus = [[[NSMutableArray alloc] init] autorelease];
[menus addObject:starMenuItem1];
[menus addObject:starMenuItem2];
[menus addObject:starMenuItem3];
[menus addObject:starMenuItem4];
[menus addObject:starMenuItem5];
AwesomeMenu *menu = [[[AwesomeMenu alloc] initWithFrame:self.view.bounds menus:menus view:self.view] autorelease];
2)在 AwesomeMenu.h 中,我在接口中声明了数组,如下所示:
NSMutableArray *_menusArray;
我为数组创建了一个属性:
@property (nonatomic, retain) NSMutableArray *menusArray;
它是合成的:
@synthesize menusArray = _menusArray;
3)在 initWithFrame: menus: view: 中,我像这样分配 menus 参数:
- (id)initWithFrame:(CGRect)frame menus:(NSMutableArray *)aMenusArray view:(UIView*)gView
{
self = [super initWithFrame:frame];
// ... some code
self.menusArray = aMenusArray; // BREAKPOINT HERE.
// ... some more code
}
4)我在作业中设置了一个断点,这就是发生的事情。在该行运行之前,我检查了我的 self.menusArray,它是: (NSMutableArray *)0x00000000 0 Objects
我越过这条线,它变成: (__NSArrayI *) 0x06045070 5 个对象。
虽然这是正确数量的对象,但它不再是 NSMutableArray ,这让我以后遇到问题!
正在发生什么,我怎样才能阻止它发生?