objective-c - 如何从 int* 转换为 NSNumber*
问题描述
我有以下代码。它编译,但崩溃。我究竟做错了什么 ?
- (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);
推荐阅读
- javascript - 触发 onFormSubmit 时未运行完整脚本,但将使用 onEdit() 手动运行
- php - 一种形式的接受和拒绝按钮
- python - 使用 Docker 从源代码构建 TensorFlow
- bash - 如何在 bash 脚本中从文件中导出环境变量
- json - 试图将excel转换为json文件
- ionic-framework - 我们如何在 ionic 4 上获取 android 令牌?
- kubernetes - 在具有大量域的 kubernetes 应用程序上自动化 letencrypt
- html - 在 VueJS 中集成 Bootstrap 模板
- java - 我怎样才能打印出整个字符串而不仅仅是单个字符?
- api - 优化多个网络请求