1

を持つカスタムdatasourceのプロパティにを割り当てようとしています。コードは次のとおりです。datasourceUIViewUITableView subView

CustomUIView.m

- (void)setDataSource:(id<UITableViewDataSource>)dataSource
{
    self.dataSource = dataSource;
    if (!self.tableView) {
        [self createTableView];
        [self setUpTableViewSizeAndAddToSuperView];
    }

    self.tableView.dataSource = self.dataSource;
}

CustomUIView.h

@property (nonatomic, strong) id<UITableViewDataSource> dataSource;

データソースは、UIViewController の delegateobject というプロパティで提供されます。

UIViewController.m

self.customView.dataSource = delegateobject;

UIViewController.h

@property (nonatomic, strong) DelegateObject *delegateobject;

DelegateObject はNSObjectwithUITableViewDataSourceプロトコルです。

しかし、アプリを実行すると、EXEC_BAD_ACCESSエラーが発生してクラッシュしました。datasourceカスタムのプロパティがUIView何度もリリースされ、次の行で停止しました。

self.dataSource = dataSource;

ゾンビ オブジェクトの診断を有効にしましたが、追加情報が表示されませんでした。どうすればこれを修正できますか?

4

1 に答える 1

1

を呼び出すとself.dataSource = dataSource、無限ループが作成されます。セッターをオーバーライドするときは、インスタンス変数を直接設定する必要があるため、その行を次のように変更します。

_dataSource = dataSource;
于 2013-07-04T08:05:22.013 に答える