代码之家  ›  专栏  ›  技术社区  ›  JosephH

合成访问器中的[\u internal lock]是否与@synchronized(self)相同?

  •  2
  • JosephH  · 技术社区  · 15 年前

    有相当多的文献证明,@synthesis-atomic-settings/getters是用如下“某物”实现的:

    {
        [_internal lock]; // lock using an object-level lock
        id result = [[value retain] autorelease];
        [_internal unlock];
        return result;
    }
    

    在这种情况下,我想以原子方式访问两个属性(即不解锁中间的锁),所以我的第一反应是使用@synchronized(self)–但是我找不到任何说明@synchronized(self)是否使用 相同的 锁定为原子getter/setter。有人知道吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   millenomi    14 年前

    苹果的docs非常擅长的一件事就是 确切地 the relevant part of the docs 只说明它是用对象级锁锁定的。注意它没有说 哪一个 不能 @synchronized(self) . (很可能不是。)