原则上,串行DispatchQueue会一个接一个地执行提交的任务。但是,如果在一项任务中触发了上下文切换(例如,调用sleep)怎么办?队列是立即执行下一个任务,还是等待当前任务完成?
对于此代码:
q.async {
print("IN 1")
var i = 1
while i < 10 {
Thread.sleep(forTimeInterval: 0.1)
i += 1
}
print("OUT of 1")
}
q.async {
print("IN 2")
}
Run Code Online (Sandbox Code Playgroud)
结果是:
// IN 1 -> OUT of 1 -> IN 2 ?
// or IN 1 -> IN 2 -> OUT of 1 ?
Run Code Online (Sandbox Code Playgroud)
我尝试在操场上运行代码,但似乎sleep(和Thread.sleep)在操场中不起作用。
multithreading grand-central-dispatch swift swift-playground
我想知道如何在 swift UI 中添加 3D 形状(例如球体)
我尝试添加一个场景并在 swift UI 中使用它,但收到一条错误消息
//SceneKit
class myscene: SCNScene{
override init(){
super.init()
}
required init?(coder: NSCoder) {
fatalError("init(coder: ) has not been implemented")
}
}
//Swift UI
struct ContentView: View {
var body: some View {
let sphere = SCNSphere(radius: 2.0)
sphere.firstMaterial?.diffuse.contents = UIColor.blue
let spherenode = SCNNode(geometry: sphere)
spherenode.position = SCNVector3(x: 0.0, y: 3.0, z: 0.0)
}
}
Run Code Online (Sandbox Code Playgroud)
网上的错误消息var body: some View {如下:
Function declares an opaque return type, but has no …
如何在 Xcode Playground 中渲染 SwiftUI 视图?PreviewProvider似乎不适用于 Swift Playground。
struct FooView: View {
var body: some View {
Text("Foo")
}
}
struct SampleView: PreviewProvider {
static var previews: some View {
FooView()
}
}
Run Code Online (Sandbox Code Playgroud) 我在框架项目中使用游乐场。有时,会出现构建问题,这些问题在构建库后总是消失。
更新到 Xcode 12 后,我无法再运行 Playgrounds。
import UIKit
import PlaygroundSupport
import MyFramework
// Error: No such module `MyFramework`
Run Code Online (Sandbox Code Playgroud) 我与此格式返回datetime一些JSON数据工作:"2015-01-17T20:00Z"当我试图把它变成一个NSDate对象,我总是留下为零.我已经通过几个教程和答案在这里对SO阅读,苹果的NSDate/NSDateFormatter /日期格式文档,和ping通了几个IRC频道.
任何人都可以告诉我我做错了什么,可能的解决方法吗?
我在Swift游乐场中失败的代码:
let dateString = "2015-01-17T20:00Z"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-ddThh:mmZ"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
Run Code Online (Sandbox Code Playgroud)
输出: "Optional(2015-01-17 06:00:00 +0000)"
在同一个Swift游乐场中工作代码:
let dateString = "2015-01-17"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
Run Code Online (Sandbox Code Playgroud)
输出: "nil"
我知道这是一个非常基本的问题,但它让我难以理解并找出原因.我有一个名称数组以及迭代它们以将它们全部作为单个名称的内容,尽管当我使用for in循环时它只生成第一个名称,我的代码:
var arrayA = ["Mike", "James", "Stacey", "Steve"]
var str = String()
for array in arrayA {
str = array
println(str)//Just prints steve
}
Run Code Online (Sandbox Code Playgroud)
问题是它只打印史蒂夫,我希望能够访问所有名称单身
这就是我所看到的:

我无法以编程方式通过 swift 创建 UISlider。错误是说我的选择器无法识别。我曾尝试使用“#selector(function)”的形式,但它也不起作用。这是我的代码:
let windTurbineView = SKView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 325, height: 600)))
let windSpeedSlider = UISlider(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 280, height: 18)))
func windSpeedSliderSetUp() {
windSpeedSlider.minimumValue = 0.0
windSpeedSlider.maximumValue = 20.0
windSpeedSlider.isContinuous = true
windSpeedSlider.tintColor = .blue
windSpeedSlider.minimumValueImage = UIImage(named: "0MPH.png")
windSpeedSlider.maximumValueImage = UIImage(named: "20MPH.png")
windSpeedSlider.value = 0
windTurbineView.addSubview(windSpeedSlider)
windSpeedSlider.center.x = windTurbineView.center.x
windSpeedSlider.center.y = 585
windSpeedSlider.addTarget(windSpeedSlider, action: Selector(("sliderValueDidChange")), for: .valueChanged)
}
func sliderValueDidChange(sender: UISlider) {
mphLabel.text = "\(sender.value)"
print("wi")
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 swift playground 并导入了以下内容:UIKit、PlaygroundSupport 和 SpriteKit。 …
我在操场上创建了一个 uibezierpath 手动添加的值,它工作正常。结果是:

现在我的目标是平滑曲线并去除这些“尖”角。我正在考虑插值函数但不确定。在我的实际代码下面:
//: Playground - noun: a place where people can play
import Foundation
import UIKit
import CoreGraphics
import QuartzCore
class DemoView: UIView {
override func draw(_ rect: CGRect) {
let origin = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
let radius = frame.size.width / 2
// self.createCircle(origin: origin, radius: radius)
self.addLinesInCircle(origin: origin, radius: radius)
}
func createCircle(origin: CGPoint, radius: CGFloat) {
let path = UIBezierPath()
path.addArc(withCenter: origin, radius: radius, startAngle: 0, endAngle: CGFloat(2 * Double.pi), clockwise: …Run Code Online (Sandbox Code Playgroud) interpolation core-graphics uibezierpath swift swift-playground
每当我在Swift游乐场中输入内容时,程序就会在我输入时运行.有没有什么办法可以更改设置,以便只在我点击运行按钮时运行?
我正在学习Swift,在课程中,我会在Udemy上或什至在他们使用Playground时在Internet上找到的视频中进行跟踪,这些代码会自动执行。
是否可以在最新版本上启用此功能?
当前使用的版本:10.2.1
我在Playground玩耍而且我想知道主要功能在哪里与其他语言不同,Swift没有主要功能,什么是替代或技术用于替换swift中的主要功能,当在Apple之外的架构中使用时(在外面使用时) of ios和osx)因为swift很快将成为opensource?
Swift提供了以下代码.如何在没有括号的情况下调用squishEm函数?是不是函数和属性之间的语法差异?
func squishEm() {
// Iterate over graphics and squish each one.
for graphic in graphics {
squishGraphic(graphic: graphic)
}
}
// Create and add Squish ’Em! button.
let squishButton = Button(name: "Squish ’Em!")
squishButton.onTap = squishEm
scene.button = squishButton
Run Code Online (Sandbox Code Playgroud) swift-playground ×12
swift ×10
swiftui ×2
xcode ×2
arrays ×1
ios ×1
scenekit ×1
swift5 ×1
uibezierpath ×1
xcode12 ×1