相关疑难解决方法(0)

我如何访问Swift的REPL?

我想知道如何从CLI执行此操作,以便我可以在不启动Xcode的情况下测试一些代码.我看到有人这样做但我找不到办法做到这一点.

swift

16
推荐指数
2
解决办法
5326
查看次数

从Xcode iOS项目运行swift脚本作为构建阶段

这是一个简单的快速脚本:

#!/usr/bin/env xcrun swift

import Foundation

let task = NSTask()
task.launchPath = "/bin/echo"
task.arguments = ["farg1", "arg2"]

let pipe = NSPipe()
task.standardOutput = pipe
task.launch()

let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)

print(output)
Run Code Online (Sandbox Code Playgroud)

我在iOS项目中添加了这个脚本作为构建阶段(在'编译源阶段之前),但是XCode无法构建项目,错误'undefined NSTask()...'当我在OSX项目中添加相同的脚本时,XCode构建项目没有任何错误.

问题是为什么XCode在iOS框架中寻找NSTask(在哪里不存在)而不是以平台脚本(如bash)的形式运行swift脚本?

只是添加:swift脚本不包含在项目中,其他文件要编译.它只是在构建阶段,甚至在编译之前添加到其他源文件(它们是objective-c文件)来运行它.

当脚本包含不属于iOS框架的类时,如何从iOS XCode项目运行自定义swift脚本的任何想法?

xcode ios swift

16
推荐指数
2
解决办法
3871
查看次数

swift playground/deinit {}中的内存泄漏并未始终如一地调用

在Swift Playground中,ARC对象删除似乎不一致.这是一个bug还是设计?

考虑这个课程:

class Test {
  var name: String
  init(name:String){
    self.name = name
    println("\(name) initialized")
  }
  deinit{
    println("\(name) deinitialized")
  }
}
Run Code Online (Sandbox Code Playgroud)

当我从操场上调用它时(不是命令行REPL,请参阅下面的注释):

var t1 = Test(name: "t1")
var t2 : Test? = Test(name: "t2")
t2 = nil
Run Code Online (Sandbox Code Playgroud)

我在控制台中只看到初始化消息:

t1 initialized
t2 initialized
Run Code Online (Sandbox Code Playgroud)

缺少的是t2的deinit.

当我在app中运行它(例如app delegate的条目)时,输出与ARC删除一致(即t1 init,然后是t2,t2 deinit然后是t1,因为整个调用块超出了范围):

t1 initialized
t2 initialized
t2 deinitialized
t1 deinitialized
Run Code Online (Sandbox Code Playgroud)

最后,在命令行REPL中(请参阅下面的注释以访问REPL),结果是明确的,即:t1由于其顶级范围而处于活动状态,但是t2被ARC删除,正如人们所期望的那样.

  1> class Test {
  2.       var name: String
  3.       init(name:String){
  4.               self.name = name
  5.               println("\(name) initialized")
  6.       }
  7.       deinit{
  8.               println("\(name) deinitialized") …
Run Code Online (Sandbox Code Playgroud)

ios swift

6
推荐指数
1
解决办法
4785
查看次数

标签 统计

swift ×3

ios ×2

xcode ×1