【问题标题】:Synchronized return objective-c同步返回objective-c
【发布时间】:2010-06-23 17:46:30
【问题描述】:
- (id)methodThatReturnsSomething { @同步(自我){ 返回零; } }

当我在 Xcode 上执行此操作时,它会返回一个警告:“控制到达非无效函数的末尾”

这段代码有什么问题吗?

【问题讨论】:

    标签: objective-c synchronized


    【解决方案1】:

    由于某些编译器版本中的错误已在其他/更高版本的编译器中修复,因此它会发出编译器警告。

    在这种情况下,是的,您确实偶然发现了编译器错误。

    【讨论】:

      【解决方案2】:

      发布的代码中的同步是多余的,但这样没有问题:
      @synchronized 块要么正常退出,要么通过异常退出。由于您已经有一个return 语句,因此不需要该块之后的另一个语句。

      【讨论】:

      • 发布的代码非常有意义。它只会导致不必要的锁定。
      • @bbum: 没错,我就是这个意思。
      【解决方案3】:

      我不明白你想在你的代码中做什么,但是

      - (id)methodThatReturnsSomething
      {
          @synchronized(self) {
          }
          return nil;
      }
      

      应该具有相同的效果(推迟返回,直到与self 关联的锁被释放),没有编译器警告。

      但是:你想做什么?您不必以这种方式输入@synchronized

      【讨论】:

      • 这种同步存在被优化器完全删除的风险,这当然不应该有任何区别——就像你说的,“你想解决什么问题”?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多