我有以下代码。它可以编译,但是会崩溃。
我究竟做错了什么 ?
- (void)start: (int*)shouldPause
{
NSNumber * oShouldPause = (NSNumber *)shouldPause;
[self performSelectorInBackground:@selector(runThread:) withObject: oShouldPause];
}
和功能runThread是
- (void)runThread: (NSNumber*) shouldPause
通常,我想在线程外部和线程内部设置一些整数,以根据此整数更改行为。
感谢帮助!
最佳答案
NSNumber * oShouldPause = @(*shouldPause);
您所做的是一个常见错误。
NSNumber
是对象,而int
是原始类型。您将指向原始类型的指针转换为指向对象的指针。编译器允许它们都只是指针。此外,代码还希望有一个对象,试图发送一条消息并引起轰动。出了些问题。您很可能不需要
int*
作为参数。只是int
。因此,您需要按如下方式创建数字对象,而无需取消引用:NSNumber * oShouldPause = @(shouldPause);
关于objective-c - 如何从int *转换为NSNumber *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51751677/