当前位置: 首页 > 面试题库 >

调用[myFunction]的结果未使用

颜思淼
2023-03-14
问题内容

在Obj-C中,常见的做法是使用便利功能执行常见的操作,例如为视图配置自动布局:

func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint
{
   // Make some constraint 
   // ...

   // Return the created constraint
   return NSLayoutConstraint()
}

如果您只需要设置约束而忘了它,则可以调用:

[view1 makeConstraint: view2]

如果要稍后存储约束以便可以删除/修改约束,则可以执行以下操作:

NSLayoutConstraint * c;
c = [view1 makeConstraint: view2]

我想快速执行此操作,但是如果我调用上述函数并且不捕获返回的约束,则会收到警告:

Result of call to 'makeConstraint(withAnotherView:)' is unused

很烦人。有什么方法可以让Swift知道我并不总是想获取返回值吗?

注意:我知道这一点。这很丑陋,而不是我要的东西:

_ = view1.makeConstraint(withAnotherView: view2)

问题答案:

这是Swift 3中引入@warn_unused_result的行为。现在,它成为默认行为,而不必显式地对函数进行注释以告知编译器调用者应使用结果。

您可以@discardableResult在函数上使用该属性,以告知编译器调用者不必“使用”返回值。

@discardableResult
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint {

   ... // do things that have side effects

   return NSLayoutConstraint()
}
view1.makeConstraint(view2) // No warning

let constraint = view1.makeConstraint(view2) // Works as expected

您可以在演进建议中更详细地了解此更改。



 类似资料:
  • 我尝试在axios中使用Post方法发送一些数据,但是代码的结果没有定义。这是我使用axios发布http请求的代码: 这个代码怎么了?

  • 从WebUI下载和查看数据很方便,但可能不适合计算机。 使用ResultDB 虽然resultdb仅用于结果预览,但不适合大规模存储。但是如果你想从resultdb中获取数据,有一些使用数据库API的简单片段可以帮助你连接和选择数据。 ``` from pyspider.database import connect_database resultdb = connect_database("

  • 不确定我是不是漏掉了什么。 如有任何建议,将不胜感激。

  • 我开始把头撞到墙上,但我完全不明白如何在间谍类上调用真正的方法。 长话短说,我正在监视我的测试类,以存根一个私有方法。然后我想调用测试类的real void方法,但它说 testedmethod是一个空方法,不能用返回值来存根它! 问题是,我不需要把它存根。我也尝试过doCallRealMethod(),没有用。 我正在使用静态编程语言和Android Studio为我的Android项目运行一些

  • 我有以下代码,即从返回CompletableFuture的web API获取给定时间间隔的报告。如果超过了返回报告的行数,时间间隔将被分成两半,并为两半调用API。这将递归重复,直到行数满足条件。 我想得到完全未来 我的代码在不需要进行间隔拆分时运行正常。如果需要递归调用,它将只返回空列表,递归调用将在稍后异步执行。 我也尝试过使用类似的东西,但没用: 如果我知道自己做错了什么,我会心存感激。谢谢

  • 问题内容: Sendkeys不起作用。请帮我解决这个问题。 安慰: 驾驶员信息: 问题答案: 我看到了同样的问题。仅在使用Chrome 65(当前:开发人员通道)时出现此问题。使用Chrome 64(稳定通道和Beta通道),一切正常。 原来我安装了旧的chromedriver。具体来说,我用用。将撞色的chromedriver 运行到2.35.528157,现在问题已解决。希望这可以帮助! TL