あるインスタンス(モーダルの場合)では、である必要があり、非モーダルの場合は、単に。である必要があるというプロパティがありNSArray
ます。toolbarButtons
UIViewController
NSMutableArray
UIViewController
NSArray
私はこのようにプロパティを初期化しました:
@property (nonatomic, copy) NSArray *toolbarButtons;
次のようにtoolbarButtonsを初期化しています。
- (void) setToolbarButtons
{
UIBarButtonItem *exitButton = [[UIBarButtonItem alloc] initWithTitle:@"Exit" style:UIBarButtonItemStyleBordered target:self action:@selector(exitButtonPushed)];
toolbarButtonsTemp = (NSMutableArray *)[[NSMutableArray alloc] init];
[(NSMutableArray*)toolbarButtonsTemp addObject:exitButton];
self.toolbarButtons = toolbarButtonsTemp;
[exitButton release];
}
その後、次のようなサブクラスで上記のメソッドをオーバーライドします。
- (void) setToolbarButtons
{
[super setToolbarButtons];
UIBarButtonItem *leftFlexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *toolButton = [[UIBarButtonItem alloc] initWithTitle:@"Tools" style:UIBarButtonItemStyleBordered target:self action:@selector(toolButtonPushed)];
[(NSMutableArray*)self.toolbarButtons addObject:leftFlexibleSpace];
[(NSMutableArray*)self.toolbarButtons addObject:toolButton];
[toolButton release];
[leftFlexibleSpace release];
}
次のエラーが発生します。
[__NSArrayI addObject:]: unrecognized selector sent to instance
これには多くの回避策があることは知っていますが、設計の観点からは、自分がやっていることは可能かどうか、そして自分の間違いをどのように修正するかを考えています。