gpt4 book ai didi

ios - @synchronized 参数具有相同的值但不同的引用?

转载 作者:行者123 更新时间:2023-11-29 02:21:37 25 4
gpt4 key购买 nike

我对@synchronized 的参数有疑问,我已经阅读了有关同步的Apple 文档,但我仍然不清楚。

我有一个例子,@synchronized 将在某个对象中采用字符串属性,如下所示:

@synchronized(someObject.A)

因为 A 是一个 NSString 对象,并且在某些情况下会携带相同的值但来自不同的 someObject 这是否会保证锁定具有相同 A 值的所有对象?

最佳答案

值得注意的是 NSString 有一些神奇处理的特殊情况。

NSString *s1 = @"Test string";
NSString *s2 = @"Test string";

这里,s1s2 实际上被编译为访问相同的内存地址,即使它们是不同的变量并且可以在应用程序中完全不同的位置实例化。

但是,如果您正在动态加载数据或使用 NSString 的构造方法之一而不是对其进行硬编码,则逐个字符匹配的字符串将不会共享同样的内存。

您可以将此视为比较 ==isEqualToString: 之间的区别。 @synchronized 只使用 == 结果。

因此,回答您的问题:可能

如果您在您的应用程序中使用 @"some string" 形式的硬编码值,您的 @synchronized 命令将链接到共享相同的所有对象A 的文本值。

如果您通过任何其他方式创建 NSString 对象,您的 @synchronized 命令将仅链接到指向完全相同的 NSString 的对象> 对象。

关于ios - @synchronized 参数具有相同的值但不同的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073126/

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