gpt4 book ai didi

ios - CF_IMPLICIT_BRIDGING_ENABLED 在 xcode5 中不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:35 30 4
gpt4 key购买 nike

WWDC 2013 演讲幻灯片包含一个部分,在某些情况下可以省略显式桥接转换。我是在 Xcode 5 中写的(尽管使用的是 10.8,而不是 10.9),编译器提示我需要桥接转换。我是不是完全不理解这个概念?

#import <Foundation/Foundation.h>

CF_IMPLICIT_BRIDGING_ENABLED
CFStringRef MyCreateStringFromNothing();
CF_IMPLICIT_BRIDGING_DISABLED

void SomeFunction() {
// compiler requires bridging cast here...
NSString* x = MyCreateStringFromNothing();
}

我问的原因是我想写:

NSString* s = CFUUIDCreateString(NULL, uuid);

并认为关于隐式桥接的新工作应该能让我写这个。但这也需要桥接 Actor 。

最佳答案

这似乎是一种黑魔法,但从我的实验来看,其中带有“Create”的函数不适用于隐式桥接。

当我编译这个时:

CF_IMPLICIT_BRIDGING_ENABLED
CFStringRef MyCreateStringFromNothing();
CFStringRef MyGetStringFromNothing();
CF_IMPLICIT_BRIDGING_DISABLED

void SomeFunction() {
NSString *const fails1 = MyCreateStringFromNothing();
NSString *const fails2 = CFStringCreateCopy(kCFAllocatorDefault, CFSTR("FOO"));

NSString *const works = MyGetStringFromNothing();
}

前两个失败,但第三个“有效”。

请注意,隐式桥接显然仍然不会阻止编译器警告您将 CFStringRef 转换为 NSString *,它只是不再要求您也插入 __bridge。

您会注意到,在 WWDC2013 session 404 50:30 的幻灯片中,他使用了 CFDictionaryGetValue(),它返回一个“void *”,因此它是少数不会引发警告的函数之一。返回实际类型(例如 CFStringRef 或 CFDictionary)的任何 CF 函数仍会抛出警告,所以,嗯。

关于ios - CF_IMPLICIT_BRIDGING_ENABLED 在 xcode5 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939291/

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