iPhone OS 2.x 用に設計されたアプリケーションがあります。
ある時点で私はこのコードを持っています
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//... previous stuff initializing the cell and the identifier
cell = [[[UITableViewCell alloc]
initWithFrame:CGRectZero
reuseIdentifier:myIdentifier] autorelease]; // A
// ... more stuff
}
しかし、initWithFrame セレクターは 3.0 で廃止されたため、respondToSelector と performSelector を使用してこのコードを変換する必要があります...
if ( [cell respondsToSelector:@selector(initWithFrame:)] ) { // iphone 2.0
// [cell performSelector:@selector(initWithFrame:) ... ???? what?
}
私の問題は、「initWithFrame:CGRectZero」と「reuseIdentifier:myIdentifier」という 2 つのパラメーターを渡す必要がある場合、A の呼び出しを preformSelector 呼び出しに分割する方法です。
編集 - fbrereto によって提案されたように、私はこれを行いました
[cell performSelector:@selector(initWithFrame:reuseIdentifier:)
withObject:CGRectZero
withObject:myIdentifier];
私が持っているエラーは、「 'performSelector:withObject:withObject' の引数2の型に互換性がありません。
myIdentifier は次のように宣言されています
static NSString *myIdentifier = @"Normal";
呼び出しを変更しようとしました
[cell performSelector:@selector(initWithFrame:reuseIdentifier:)
withObject:CGRectZero
withObject:[NSString stringWithString:myIdentifier]];
成功せずに...
もう1つのポイントは、CGRectZeroがオブジェクトではないことです...