我有以下代码。它编译,但崩溃。 我做错了什么?
- (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
。因此,您需要按如下方式创建 number 对象,而无需取消引用:
NSNumber * oShouldPause = @(shouldPause);
关于objective-c - 如何从 int* 转换为 NSNumber*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751677/