トップ 一覧 検索 RSS ログイン

Playground - 応用編

最終更新日: 2015/07/15 (Xcode 6.4, Swift 1.2)

  Playgroundでprintln() / NSLog()の結果を出力

メニューの[View] - [Assistant Editor] - [Show Assistant Editor]を選択して、Project Navigatorを表示します。

pic1.png

Assistant Editorにprintln()やNSLog()の出力が表示されます。

pic2.png

  PlaygroundでXCPlaygroundモジュールを使用する

XCPlaygroundモジュールを使用することで、Playgroundでいろいろな機能を使うことが出来るようになります。

import UIKit
import XCPlayground

for no in 0..<20 {
	let p0 = no * no
	XCPCaptureValue("p0", p0)
}

  Playgroundで値を指定してキャプチャする

XCPlaygroundモジュールのXCPCaptureValue()を使用することで、値を指定してキャプチャすることが出来ます。

import UIKit
import XCPlayground

for no in 0..<20 {
	let p0 = no * no
	XCPCaptureValue("p0", p0)
}

for no in 20..<40 {
	let tmp = 40 - no
	let p0 = tmp * tmp
	XCPCaptureValue("p0", p0)
}

pic4.png

  Playgroundで非同期処理を実行できるようにする

XCPlaygroundモジュールのXCPSetExecutionShouldContinueIndefinitely()を使用することで、非同期の処理を実行できるように設定できます。

import UIKit
import XCPlayground

/// 非同期の処理を実験するためのクラス
class TestTimer: NSObject {
	var count = 0

	func startTimer() {
		println("start")
		NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "execTimer:", userInfo: nil, repeats: true)
	}

	func execTimer(timer: NSTimer) {
		count++
		println("count: \(count)")
	}
}

// 非同期の処理を実行できるようにする
XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true)

// 非同期の処理を実験
let test = TestTimer()
test.startTimer()

pic5.png

  PlaygroundでViewの内容をリアルタイムで表示する

XCPlaygroundモジュールのXCPShowView()を使用することで、Viewの内容をリアルタイムで表示することが出来るようになります。

import UIKit
import XCPlayground

/// Viewのリアルタイム表示をテストするためのクラス
class TestView: NSObject {
	var count = 0
	var view: UIView!

	func startTimer() {
		let re = CGRect(x: 0, y: 0, width: 200, height: 200)
		view = UIView(frame: re)
		XCPShowView("Test View", view)

		NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "execTimer:", userInfo: nil, repeats: true)
	}

	func execTimer(timer: NSTimer) {
		count++

		let hue = CGFloat(count % 100) / 100.0
		view.backgroundColor = UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1)
	}
}

// Viewの表示を実験
let test = TestView()
test.startTimer()

pic6.png

 ※XCPShowView()を呼び出すと、自動的に非同期の処理を実行できるようになります

  『Error sending deferral props』への対応

Xcode 6.4でiOS向けのPlaygroundを作成してXCPShowView()を実行した場合、『Error sending deferral props』のエラーが発生します。

以下の手順にそって設定を変更することで、このエラーを解消することが出来ます。

1. File Inspectorを表示

メニューの[View] - [Utilities] - [Show File Inspector]を選択。

2. Run in Full Simulatorをチェック

Playgrounds Settingsの中の『Run in Full Simulator』をチェックする。

pic7.png

これでエラーは発生しなくなりますが、代わりに、Playground実行時にiOS Simulatorが自動で起動するようになります。


[Playground]