我有一个为iPhoneOS 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:cDirectZero”和“reuseIdentifier:myIdentifier”,如何将对的调用中断为prebelselector调用???
编辑-根据FBREETO的建议,我做到了
[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]];
没有成功…
另一点是cDirectZero不是一个对象…