我有:
BOOL someBoolValue = ... //some code returning BOOL
当我尝试调用时:
[self performSelectorOnMainThread:@selector(refreshView:) withObject:someBoolValue waitUntilDone:NO];
我收到了警告:
从不同大小的整数
转换为指针
有关此的任何提示吗?
答案 0 :(得分:5)
您正在传递一个“原始”布尔值,其中id
(指向对象的指针)应为。
[self performSelectorOnMainThread: @selector(refreshView:)
withObject:someBoolValue
waitUntilDone:NO]
最好是
[self performSelectorOnMainThread:@selector(refreshView:)
withObject: [NSNumber numberWithBool: someBoolValue]
waitUntilDone: NO]
您可以通过将refreshView:
方法发送到数字对象来提取boolValue
方法中的布尔值:
if( [myWrappedBoolean boolValue] ) {
...
}
与Java或C#不同,Objective-C没有从原始值到对象的“自动装箱”。 BOOL
类型只是一个小整数类型,它会导致您看到的错误消息,因为编译器需要指向performSelectorOnMainThread:withObject:waitUntilDone:
的第二个参数的指针。