如果我使用
[self performSelectorOnMainThread:@selector(uploadDidEnd:) withObject:foo
waitUntilDone:YES]
在方法 - (void)uploadDidEnd:(id)sender
中哪个对象是发件人?在调用foo是一个自定义类?如何在我的对象中转换此发件人?
我正在尝试演员,但我正在
'-[_NSThreadPerformInfo CountY]: unrecognized selector sent to instance 0x52bbd0'
在通知中,我使用从发件人到NSNotification的强制转换,并且通知具有对象属性,但对于NSThread,我没有找到。
感谢。
答案 0 :(得分:2)
声明sender
的参数是传递给您的方法的唯一参数。 performSelectorOnMainThread:withObject:waitUntilDone:将withObject
之后的参数传递给要执行的选择器,是的,这里foo
将传递给uploadDidEnd:
投射不是解决方案。 Objective-C是一种动态语言,因此即使转换消除了编译器警告,对象的实际实现也不会改变,因此它自然不会响应消息。
答案 1 :(得分:2)
你可以想到:
[self performSelectorOnMainThread:@selector(uploadDidEnd:)
withObject:foo
waitUntilDone:YES]
与...相同:
[self uploadDidEnd:foo];
你确定这是你要做的吗?
如果是这样的话:在你的uploadDidEnd:
实现中,你可以将foo转换为它真正的对象类型:
- (void)uploadDidEnd:(id)sender
{
FooClass *foo = (FooClass *)sender;
[foo doSomething]; // or whatever
}