如何从int*转换为NSNumber*

Bil*_*ert 2 objective-c

我有以下代码.它编译,但崩溃.我究竟做错了什么 ?

- (void)start: (int*)shouldPause
{        
    NSNumber * oShouldPause = (NSNumber *)shouldPause;
    [self performSelectorInBackground:@selector(runThread:) withObject: oShouldPause];
}
Run Code Online (Sandbox Code Playgroud)

和函数runThread是

- (void)runThread: (NSNumber*) shouldPause
Run Code Online (Sandbox Code Playgroud)

通常,我想在线程外部和线程内部设置一些整数,以根据此整数更改行为.

感谢帮助!

And*_*kha 6

NSNumber * oShouldPause = @(*shouldPause);
Run Code Online (Sandbox Code Playgroud)

你做了什么是一个常见的错误.NSNumber是一个对象,int而是一个原始类型.您将指向基本类型的指针强制转换为指向对象的指针.编译器允许,因为它们都只是指针.此外,代码期望一个对象,试图发送消息和繁荣.有些不对劲.

您很可能不需要int*作为参数.只是int.因此,您需要按如下方式创建数字对象,而无需解除引用:

NSNumber * oShouldPause = @(shouldPause);
Run Code Online (Sandbox Code Playgroud)