gpt4 book ai didi

ios - 如何在 Objective-C 中确定相同的 NSString?

转载 作者:行者123 更新时间:2023-11-29 10:40:12 25 4
gpt4 key购买 nike

考虑以下代码:

+ (NSString *)helloString
{
return @"hello";
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *a = [AppDelegate helloString];
NSString *b = [AppDelegate helloString];
NSLog(@"%@", a == b ? @"yes" : @"no");
abort();
}

在我的机器上,结果总是"is"。这是否意味着 NSString 字面值 @"hello" 在 Objective-C 运行时总是相同的“对象”?

其实我的初衷是在NSNotificationpostNotificationName:object:方法中使用一个唯一可识别的对象绑定(bind)。我计划使用 NSString 文字作为对象。这样做安全/推荐吗?

最佳答案

从历史上看,NSString 文字在一个翻译单元内保证是唯一的,并且在实践中甚至在翻译单元之间也经常是唯一的。据我所知,当前文档不再提出此声明,Clang 文档建议不要依赖它。

如果您想要一个保证始终是同一个对象的字符串,您可以简单地将一个字符串分配给一个全局常量。所有对该常量的引用将肯定产生相同的对象。

不过,关于 NSNotification,我不会使用这样的字符串作为对象。 NSNotification 的语义表明对象参数应该是触发通知的对象——它在概念上“来自”。与通知相关的其他信息在用户信息字典中更有意义。

关于ios - 如何在 Objective-C 中确定相同的 NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920406/

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