我有以下代码.它编译,但崩溃.我究竟做错了什么 ?
- (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)
通常,我想在线程外部和线程内部设置一些整数,以根据此整数更改行为.
感谢帮助!
NSNumber * oShouldPause = @(*shouldPause);
Run Code Online (Sandbox Code Playgroud)
你做了什么是一个常见的错误.NSNumber是一个对象,int而是一个原始类型.您将指向基本类型的指针强制转换为指向对象的指针.编译器允许,因为它们都只是指针.此外,代码期望一个对象,试图发送消息和繁荣.有些不对劲.
您很可能不需要int*作为参数.只是int.因此,您需要按如下方式创建数字对象,而无需解除引用:
NSNumber * oShouldPause = @(shouldPause);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |