我有一个类似于这样的 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

谁能告诉我这里的问题是什么?谢谢。

最佳答案

getUserDefaults 采用 BOOL*。传递 NO 时不会收到警告,因为 NO 是 0 而 0 是 NULL,这是一个合法的 BOOL*。 YES 是 1 并且相同的转换不是自动安全的。

你应该让 getUserDefaults 使用一个普通的 BOOL,而不是一个指针。

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

10-09 04:21