gpt4 book ai didi

objective-c - CFStringRef 适合常量吗?

转载 作者:行者123 更新时间:2023-12-01 16:18:54 24 4
gpt4 key购买 nike

我想定义一些常量并考虑使用 #define 结构,如下所示:

#define kUpdateTeamNotification CFSTR("kUpdateTeamNotification")

我的问题是,当我去使用它时:

[[NSNotificationCenter defaultCenter] postNotificationName:kUpdateTeamNotification object:team];

我收到不兼容的指针类型警告。我的印象是 CFSTR 本质上与 @"" 字符串相同。我的理解有误吗?

最佳答案

CFStringNSStringtoll-free bridged所以他们是同一回事。 (CFSTR 是一个用于创建 CFString 的宏)。但是,由于指针具有不同的类型,因此您必须明确向编译器发出信号。此外,在 ARC 中,您将不得不使用桥接转换,因为您正在跨越对象和 C 结构之间的界限。

这里是你如何使用桥接 Actor

[[NSNotificationCenter defaultCenter] postNotificationName:(__bridge NSString *)kUpdateTeamNotification object:team];

可以在此处找到有关桥接转换的更多信息:NSString to CFStringRef and CFStringRef to NSString in ARC?


然而,您可能希望使用 NSString 文字而不是 CFStringRef,并且还可以使用 NSString *const(如Constants in Objective-C ) 而不是 #define

所以你的常量会变成

头文件(.h)

FOUNDATION_EXPORT NSString *const kUpdateTeamNotification;

执行文件(.m)

NSString *const kUpdateTeamNotification = @"kUpdateTeamNotification";

关于objective-c - CFStringRef 适合常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433227/

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