3

Flurry を使用して iPhone アプリの統計を追跡していますが、最近、非常に奇妙なエラーがいくつか見られます。一見ランダムなオブジェクトが「numberOfSectionsInTableView」メッセージを受信して​​いますが、その方法/理由がわかりません。このアプリは、4.2.1 SDK を使用してビルドされ、iOS 4.0 デバイスを対象としています。いくつかの例のスニペットを次に示します。


NSInvalidArgumentException: -[NSCFString numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f3de10

NSInvalidArgumentException: -[__NSCFData numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f55bc0

NSInvalidArgumentException: -[NSPathStore2 numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f5ebc0

NSInvalidArgumentException: -[__NSCFType numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x2ac5f0

NSInvalidArgumentException: -[PLPhoto numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x2fbc30

NSInvalidArgumentException: -[PLPhotoLibrary numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x725ea20

通常の UITableView デリゲート メソッドで numberOfSectionsInTableView を指定するだけで、直接呼び出すことはありません。このメソッドを直接呼び出す唯一のコードは、ASIHTTPRequest ライブラリにありました。


    if (section == [self numberOfSectionsInTableView:aTableView]-1) {
        return 30;
    }
    return 0;

しかし、これは「ASIAuthenticationDialog.m」にあり、ASIHTTPRequest で認証を使用していません。

誰もこのようなものを見たことがありますか?私はあらゆる提案を受け入れますが、ここでかなり困惑しており、これまでのところ再現できません。

ありがとう。

4

2 に答える 2

3

古典的な過剰リリースの問題のように聞こえます。オブジェクトを過剰に解放し、代わりに他のランダム オブジェクトにメッセージを送信しています。

ゾンビ検出をオンにして、テスト ケースを再試行してください。

于 2011-02-20T21:36:16.153 に答える
0

私は同じ問題を抱えていましたが、私の問題は、メソッドでローカルにデータソースを作成し、同じメモリの問題で実行されることでした

- (void)setupDataSource {
  /* some code to create sections */
  TransactionDetailDataSource *dataSource = [[TransactionDetailDataSource alloc] initWithSections:sections];

  self.tableView.dataSource = dataSource;
  self.tableView.delegate = dataSource;

  [self.tableView reloadData];
}

...新しいプロパティを作成する必要がありました

@property (nonatomic, strong) TransactionDetailDataSource *dataSource;

この行を追加します

self.dataSource = dataSource;

メソッドの最後に。

于 2016-03-08T11:51:57.507 に答える