ios - 将函数结果返回到输出参数

标签 ios objective-c swift

objective-c中,我可以声明一个带有输出参数的函数,我想这就是所谓的按引用传递:

-(void) doTask(int id, output: (NSArray**)results) {
   …
   results = getResult()
}

然后,我可以访问结果来检查doTask()在函数范围之外的输出。

swift中,它仍然有效吗?

func doTask(id:Int, results:NSArray) -> Void {
  …
  results = getResult()
}

我可以将 doTask() 的最终结果传递给函数参数 results 并在函数作用域之外访问它吗?

最佳答案

在 Swift 中,您需要将参数标记为 inout;也就是说,您可以在函数中对其进行写入,并且对变量的更改会在函数范围之外生效:

func doTask(id: Int, inout results: NSArray) -> Void {
    // …

    results = NSArray()
}

然后要调用该函数,您需要传递该类型的有效变量,并在其后面附加一个&符号:

var results: NSArray()
doTask(4, &results)

关于ios - 将函数结果返回到输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475844/

相关文章:

ios - 为什么我不能为某些特定的 iOS 模拟器构建?

iphone - 如何通过使用 UIPanGestureRecognizer 平移 UIView 在 iPhone 中获得更多 320 的值

ios - 将 IBDesignable 中的操作 UIButton 转发给父 Controller

ios - 切换到调试时体系结构 x86_64 的 undefined symbol

ios - CloudKit 不检索应该存在且可检索的记录

ios - 在呈现新 View Controller 后关闭当前 View Controller - swift

ios - TableView 单元格中的 UIGestureRecognizer 获取 indexPath 始终返回最后一个单元格的 indexPath

ios - 使用 View iOS 滚动 uilabel 时保持标签文本与屏幕居中对齐?

ios - 如何修复导航 Controller 中的 UIButtons 越界问题?

swift - 所选图像未从 YPImagePicker 显示