0

色付きの画像を含むツールバーを取得するために、次のクラスを作成しました

@interface likeUIBarButtonItem : UIBarButtonItem
- (id) initWithStatus: (enum ApartmentLikeStatus)p_status;
@end

m ファイルは次のようになります。

- (IBAction) likeStatus_Clicked: (id) sender
{
    self.numberOfClicks++;
    [self.statusButton setImage:[self getStatusImage] forState:UIControlStateNormal];
}

- (id) initWithStatus: (enum ApartmentLikeStatus)p_status
{
    self.statusButton =  [UIButton buttonWithType:UIButtonTypeCustom];
    [self.statusButton setImage:[self getStatusImage] forState:UIControlStateNormal];
    [self.statusButton addTarget:self action:@selector(likeStatus_Clicked:)      forControlEvents:UIControlEventTouchUpInside];
    [self.statusButton setFrame:CGRectMake(0, 0, 20, 20)];
    self = [[likeUIBarButtonItem alloc] initWithCustomView:self.statusButton];

    return self;
}

ビューコントローラーでは、次のことを行います。

likeUIBarButtonItem* stausBtn = [[likeUIBarButtonItem alloc]    initWithStatus:self.apartmentToShow.userLikness];
// List of toolbaritems
NSArray* toolbarItems = [NSArray arrayWithObjects: stausBtn, nil];
self.toolbarItems = toolbarItems;
self.navigationController.toolbarHidden = NO;

ボタンが表示されますが、クリックするとアセンブリコードが表示されます

0x120a09f:  movl   (%edi), %esi  <-- thread 1: EXC_BAD_ACCESS (code=2 address=0x0)

私のstatusButtonは宣言(strong, nonatomic)されていますが、initと関数の呼び出しの間のどこかで解放されると思いますが、そうですか、それとも何か他のものですか? それが何であれ、どうすれば修正できますか?

4

1 に答える 1