iphone - 赋值从整数生成指针而不进行强制转换

标签 iphone c objective-c cocoa cocoa-touch

我有一个与此类似的 Obj-C 方法:

-(void)getUserDefaults:(BOOL *)refreshDefaults
{
    PostAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    if (refreshDefaults) {
        [appDelegate retrieveDefaults];
    }
}

当我这样调用它时,我不会收到任何警告:

[self getUserDefaults:NO];

当我这样调用它时,我会收到警告:

[self getUserDefaults:YES];

警告:传递 'getUserDefaults:' 的参数 1 从整数生成指针而不进行强制转换

注意:我总是先调用传递 NO 的方法,然后再传递 YES

任何人都可以告诉我这里的问题是什么吗?谢谢。

最佳答案

BOOL 是原始类型,不是类,所以你的方法声明应该是

-(void)getUserDefaults:(BOOL)refreshDefaults;

相反。你收到警告的原因是 0 (这是 NO 定义的)是一个没有转换的有效指针值,相当于 NULL,但是 1(YES 被定义为)在没有转换的情况下不是有效的指针值。

关于iphone - 赋值从整数生成指针而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/380024/

相关文章:

iphone - SQLite 的删除和写入,使用 JSON 数据同步 MySQL 中的远程表

iphone - 插入后 NSMutableDictionary 重新排序元素

c - Valgrind 检测到的 Still Reachable Leak

ios - 在开始日期和结束日期之间获取每月的第三个星期六

iphone - 从我自己的图像创建 "map"

iphone - 即时更改 NSFetchedResultsController 中的排序

c++ - 在 Cocoa 项目中使用 C++ 代码进行河豚加密

iphone - 当副本更改时 NSDictionary 也会更改

c - 为具有多个接口(interface)的设备设置 MTU

c - 将结构数组作为复合文字传递给函数