gpt4 book ai didi

ios - 为什么不调用指定的初始化程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:55 26 4
gpt4 key购买 nike

根据 the docs应该始终调用指定的初始化程序,但是当我尝试在没有权限的情况下获取用户的血型时,创建了 NSError 但它的指定初始化程序(- [NSError initWithDomain:code:userInfo :]) 永远不会被调用。

我使用的代码是:

HKHealthStore *healthStore = [[HKHealthStore alloc] init];
HKBloodTypeObject *bloodType = [healthStore bloodTypeWithError:&error];
NSLog(@"Blood type: %@, error: %@", bloodType, error);

Obs:我知道指定的初始化器没有被调用,因为我已经调配了它。其他方法,如 - [NSFileManager contentsOfDirectoryAtPath:error:] 的行为符合预期。

为什么会这样?我错过了什么吗?我应该打开雷达吗?

最佳答案

当像 HealthKit 这样的大部分工作在进程外完成的框架向您返回错误时,很可能返回给您的错误已在另一个进程中实例化,然后通过 XPC 传递。这意味着您在进程中遇到的 NSError 实际上是由 NSXPCConnection 使用 NSSecureCoding 重构的。如果您查看 NSCoding 协议(protocol),您会注意到 initWithCoder: 也是一个伪指定的初始化程序。任何实现 NSCodingNSSecureCoding 的类都有 initWithCoder: 作为额外的指定初始化器,可以调用它来代替其他指定初始化器。

关于ios - 为什么不调用指定的初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com