2014-09-04 19 views
18

Con un parco giochi per iOS impostato come semplice come questo:Swift iOS parco giochi: Errore durante l'invio differimento puntelli

import UIKit 
import SpriteKit 
import XCPlayground 

let s = CGSize(width: 300, height: 300) 
let f = CGRect(origin: CGPointZero, size: s) 
let view = SKView(frame: f) 
let scene = SKScene(size: s) 
scene.backgroundColor = SKColor.redColor() 
view.presentScene(scene) 
XCPShowView("main view", view) 

sto ottenendo questo nella console:

2014-09-04 17:02:13.358 SpriteKitBETA7[2009:20695] Error sending deferral props: 0x10000003 

c'è un "principale visualizza "box nella cosa Assistant Editor, ma non mostra nulla. Questo stesso codice esatto (con import Cocoa anziché import UIKit) funziona perfettamente su un parco giochi OSX. Sono consapevole di poter testare solo cose in un parco giochi OSX (anche se sarebbe più comodo su iOS perché non voglio usare Yosemite ma ho l'SDK iOS7) e copiare e incollare nel mio progetto, ma Volevo sapere se qualcuno ha capito cosa sta succedendo qui.

+0

Lo stesso problema persiste se si commenta XCPShowView()? In ogni caso, potresti provare a commentare progressivamente le cose per vedere quale riga di codice è il colpevole. In generale, non riesco a vedere nulla di evidentemente sbagliato in quello che stai facendo (non un esperto di SpriteKit) - quindi potrebbe valere la pena presentare un bug report con Apple al riguardo –

+0

In effetti, l'errore è scomparso se commento il Chiamata XCPShowView. Sfortunatamente, così è la cosa dell'esposizione di debug. Forse ora che non sono nemmeno autorizzato ad usare i parchi giochi OSX (con l'ultimo Xcode, il GM), è tempo di presentare una segnalazione di bug come dici tu. – figha

+0

Quale versione di OSX è in esecuzione? Alcune funzionalità del parco giochi sono disponibili solo su Yosemite; per esempio, la mela campione di progetto fornita dalla demo di Playgrounds del keynote WWDC non è stata in grado di funzionare su Maverick. – cmyr

risposta

0

Cosa hai visto? Sono arrivato a vedere una scena con uno sfondo colorato che voglio. Prova questo:

import UIKit 
import SceneKit 
import QuartzCore 
import XCPlayground 

let view = SCNView(frame: CGRectMake(0, 0, 300, 300)) 
let myScene = SCNScene() 
view.scene = myScene 
view.backgroundColor = UIColor.blueColor() 
view.backgroundColor = UIColor.yellowColor() 

let root = view.scene?.rootNode 

XCPShowView("The Scene View", view) 

potete provarlo per colore diff, e reso esso. Tuttavia, se aggiungo una sfera al nodo radice, non succede niente. E vedo anche questo nel mio Uscita Console:

2014/09/13 16: 59: 35.766 SceneKitPlayground [23682: 13804922] errore durante l'invio oggetti di scena di differimento: 0x10000003

Inoltre, se posso passare la cosa a OS X , lo stesso codice che aggiunge la sfera funzionerà.

+0

Ho appena realizzato che non stai usando SceneKit, ma SpriteKit. Non l'ho provato Potrebbe essere peggio se non si ottiene nemmeno una vista con un colore di sfondo. – kawingkelvin

+0

Quindi, la stessa cosa accade con SceneKit. OK, interessante. A proposito, penso che il motivo per cui puoi cambiare il colore dello sfondo è che lo stai facendo alla vista, non alla scena, come me. Posso fare 'view.backgroundColor = SKColor.greenColor()' nel mio codice e lo mostra anche. – figha

+0

Ho appena visto questo errore accadere di nuovo in un parco giochi, e questa volta stavo facendo solo cose UIView. Hai dimenticato cosa ho fatto ... posterò se lo trovo. – kawingkelvin

0

sono riuscito a farlo funzionare aprendo il file di ispezione, la modifica delle impostazioni parco giochi per OSX, poi di nuovo a iOS e controllo 'Run in Simulator completa'. Questo è in XCode 6.1.

19

Per il Xcode 6 Release Notes, si vuole attivare Esegui nel Simulatore completa in Impostazioni File. Tieni presente che verrà eseguito un po 'lento poiché viene eseguito tramite iOS Simulator. Dovrai attendere un po 'prima che il simulatore iOS venga avviato prima che il tuo XCPShowView inizi a essere visualizzato nella timeline del parco giochi.

  1. Nella Xcode barra dei menu , andare a Visualizza>Utilità>ispettore Visualizza File ( + +)
  2. In Impostazioni file a destra, sotto Impostazioni giochi, assicurarsi che la piattaformaè impostato su iOS
  3. Assicurarsi che Esegui in Full Simulator sia selezionato.

Se il mouse sopra il Esegui nel Simulatore opzione Full spiega che si dovrebbe usare questo con una vista che animano o che utilizzano OpenGL. Entrambi i quali si applicano a utilizzando SceneKit o SpriteKit.

+0

Questo non sempre funziona. Quando si attiva l'opzione Esegui in modalità di simulazione completa, il tremolio della scena nel simulatore. E, come aggiunta "bonus" se stai provando una scena di un parco giochi con le dimensioni di un Ipad, il simulatore rifiuta testardamente di rilevare le dimensioni ed eseguire la modalità IPad. Anche se si seleziona da Hardware, iPad, quindi tornare al codice, modificare qualcosa e salvare, si riavvierà in modalità Iphone. – lorddarq

+0

@lorddarq Non dovresti controllare i risultati nell'app iOS Simulator. Ecco perché è lanciato in background. Dovresti controllare i risultati nella visualizzazione Cronologia del Playground. Lo schermo del simulatore sfarfalla perché il buffer viene ridimensionato e catturato per essere visualizzato nella visualizzazione timeline. Anche questo è catturare l'intero buffer, non solo lo schermo. Quindi le dimensioni dello schermo dell'iPad rispetto all'iPhone non contano. –

+0

Capisco ma quello sembra essere un hack, piuttosto che qualsiasi altra cosa. Apple non può essere Apple e sviluppare qualcosa correttamente? – lorddarq

Problemi correlati