私はすでに他のSOの議論を見てきましたが、答えが見つからないようです。基本的に次のコードの後にこの答えを得ています:
1) AwesomeMenu を所有するクラスで、AwesomeMenu を初期化するために必要な、AwesomeMenuItems の NSMutableArray を作成しています。
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 オブジェクト
行をまたぐと、次のようになります: (__NSArrayI *) 0x06045070 5 つのオブジェクト。
これは正しいオブジェクト数ですが、後で問題が発生する NSMutableArray ではなくなりました。
何が起こっているのか、どうすればそれを止めることができますか?