2 lpploverou LPPloveROU 于 2013.06.25 10:44 提问

解析参数到@selector的问题

需要读取@selector,请帮忙看看

解析一个参数到 @selector,实现代码如下:

- (void)viewDidLoad{
    [super viewDidLoad];

    NewsCell *cell = (NewsCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil){
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
    NSString *string = @"image.png";

    [self performSelectorInBackground:@selector(doSomeThing::) withObject:nil];
}

-(void) doSomeThing:(UITableViewCell *)newsCell imageName:(NSString *)imageName{
    NSLog(@"newsCell: %@", newsCell);
    NSLog(@"imageName: %@", imageName);
}

创建了新的UITableViewCell名为cell,是从其它nib文件中加载的,并创建了新字符串名为string

问题,如何将cell和string作为参数发送到 performSelectorInBackground 中的 @selector

2个回答

Lizhiliang1992
Lizhiliang1992   2013.06.25 14:48
已采纳
NSDictionary *args=[NSDictionary dictionaryWithObjectsAndKeys:cell,@"cell",string,@"imageName",nil];
[self performSelectorInBackground:@selector(doSomeThingWrapper:) withObject:dict];

-(void)doSomeThingWrapper:(NSDictionary *)args {

    [self doSomeThing:(NewsCell*)[args objectForKey:@"cell"]  imageName:[args objectForKey:@"imageName"]];
}
suannai0314
suannai0314 帮你编辑了下代码部分的格式,更多markdown使用见http://ask.csdn.net/pages/markdown
4 年多之前 回复
zhanglei5415
zhanglei5415   Rxr 2013.06.25 13:57

将你代码中的

 [self performSelectorInBackground:@selector(doSomeThing::) withObject:nil];

替换成:

NSDictionary *args=[NSDictionary dictionaryWithObjectsAndKeys:cell,@"cell",string,@"imageName",nil];
[self performSelectorInBackground:@selector(doSomeThingWrapper:) withObject:dict];

-(void)doSomeThingWrapper:(NSDictionary *)args {

    [self doSomeThing:(NewsCell*)[args objectForKey:@"cell"]  imageName:[args objectForKey:@"imageName"]];
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!