1

私は何日もこれに固執していて、それに戻るたびに、私は自分のコードをますます混乱させ続けています、笑。これが私がやろうとしていることです。料金の表リストがあります。1つをタップすると、料金の詳細が記載されたモデルビューが表示されます。これで、モデルが提示されると、ユーザーのXMLリストをフェッチして解析し、カスタムデリゲートを介してNSMutableArrayを返すオブジェクトが作成されます。次に、ポップオーバービューが呼び出されたときに、ポップオーバービューへのinitWithArray呼び出しでユーザー配列が使用されるときに、ピッカーポップオーバーを表示するボタンがあります。配列内のデータが正しいことはわかっていますが、[pickerUsers count]が呼び出されると、EXC_BAD_ACCESSが取得されます。私はそれが記憶/所有権の問題だと思いますが、何も役に立たないようです。どんな助けでもいただければ幸いです。

関連するコードスニペット:

チャージポップオーバー(チャージ詳細モデルビュー):

@interface ChargePopoverViewController .....
NSMutableArray *pickerUserList;
@property (nonatomic, retain) NSMutableArray *pickerUserList;

@implementation ChargePopoverViewController
@synthesize whoOwesPickerButton, pickerUserList;
- (void)viewDidLoad {   
    JEHWebAPIPickerUsers *fetcher = [[JEHWebAPIPickerUsers alloc] init];
    fetcher.delegate = self;
    [fetcher fetchUsers];
}
-(void) JEHWebAPIFetchedUsers:(NSMutableArray *)theData {
    [pickerUserList release];
    pickerUserList = theData;
}
- (void) pickWhoPaid: (id) sender {
    UserPickerViewController* content = [[UserPickerViewController alloc] initWithArray:pickerUserList];
    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:content];
    [popover presentPopoverFromRect:whoPaidPickerButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    content.delegate = self;    
}

ユーザーピッカービューコントローラー

@interface UserPickerViewController .....
NSMutableArray *pickerUsers;
@property(nonatomic, retain) NSMutableArray *pickerUsers;

@implementation UserPickerViewController
@synthesize pickerUsers;
-(UserPickerViewController*) initWithArray:(NSMutableArray *)theUsers {
    self = [super init];

    if ( self ) {
        self.pickerUsers = theUsers;
    }

    return self;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
    // Dies Here EXC_BAD_ACCESS, but NSLog(@"The content of array is%@",pickerUsers); shows correct array data 
    return [pickerUsers count];
}

役立つ場合は、追加のコードを提供できます。前もって感謝します。

4

1 に答える 1

3

配列を保持するivarを次のように宣言します...

@property (nonatomic, retain) NSMutableArray *pickerUserList;

しかし、次のように実装されたメソッドがあります。

-(void) JEHWebAPIFetchedUsers:(NSMutableArray *)theData {
    [pickerUserList release];
    pickerUserList = theData;
}

あなたは保持theDataしておらず、合成されたセッターを呼び出していません。Build and Analyzeを実行した場合は、この問題をキャッチして通知する必要があります。そうでない場合は、バグを報告してください。

于 2010-05-20T03:31:58.400 に答える