webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Площадка за игра на Swift iOS: Грешка при изпращане на реквизити за отлагане

С игрална площадка за iOS, настроена толкова просто като това:

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)

Получавам това в конзолата:

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

ИМА поле "главен изглед" в помощния редактор, но то не показва нищо. Точно същият код (с import Cocoa вместо import UIKit) работи перфектно на игрище на OSX. Наясно съм, че мога просто да тествам неща в игрище на OSX (въпреки че би било по-удобно на iOS, тъй като не искам да използвам Yosemite, но имам iOS7 SDK) и да копирам-поставя в моя проект, но аз исках да знам дали някой разбира какво се случва тук.


  • Продължава ли същият проблем, ако коментирате XCPShowView()? Във всеки случай можете да опитате постепенно да коментирате неща, за да видите кой ред код е виновникът. Като цяло не виждам нищо очевидно нередно в това, което правите (все пак не съм експерт по SpriteKit) - така че може би си струва да подадете доклад за грешка до Apple за това 14.09.2014
  • Ефективно грешката изчезва, ако коментирам извикването на XCPShowView. За съжаление, така е и с показването на грешки. Може би сега, когато дори не ми е позволено да използвам игрални площадки на OSX (с най-новия Xcode, GM), е време да подам доклад за грешка, както казвате. 16.09.2014
  • Каква версия на OSX използвате? Някои от функциите на детската площадка са налични само в Йосемити; например ябълката за примерен проект, предоставена от демонстрацията на Playgrounds от основната бележка на WWDC, не можа да работи на Mavericks. 22.10.2014

Отговори:


1

Съгласно Бележки по изданието на Xcode 6, ще искате да активирате Изпълнете пълен симулатор в Инспектор на файлове. Имайте предвид, че това ще работи малко бавно, тъй като работи през iOS Simulator. Ще трябва да изчакате известно време, докато симулаторът на iOS се стартира, преди вашият XCPShowView да започне да се показва във времевата линия на игралната площадка.

  1. В лентата с менюта Xcode отидете на Изглед > Помощни програми > Показване на файловия инспектор (++1)
  2. Във файловия инспектор вдясно, под Настройки на игралната площадка, се уверете, че Платформата е зададена на iOS
  3. Уверете се, че Изпълни в пълен симулатор е отметнато.

Ако поставите курсора на мишката върху опцията Изпълни в пълен симулатор, това обяснява, че трябва да използвате това с изгледи, които анимират или използват OpenGL. И двете се отнасят за използването на SceneKit или SpriteKit.

07.11.2014
  • Това не винаги работи. Когато активирате опцията Run in full simulator, или сцената трепти в симулатора. И като допълнителен бонус, ако тествате сцена на детска площадка с размер на Ipad, симулаторът упорито отказва да открие размера и да работи в режим на iPad. Дори ако изберете от Хардуер, iPad, след това се върнете към кода, промените нещо и запазите, той ще се рестартира в режим Iphone. 03.05.2015
  • @lorddarq Не трябва да проверявате резултатите си в приложението iOS Simulator. Ето защо се стартира във фонов режим. Трябва да проверявате резултатите си в изгледа Timeline на Playground. Екранът на симулатора мига, защото буферът се мащабира и улавя, за да бъде показан в изгледа на времевата линия. Освен това това е заснемане на целия буфер, а не само на екрана. Така че размерът на екрана на iPad спрямо iPhone няма значение. 04.05.2015
  • Разбирам, но това изглежда е хак, а не нещо друго. Не може ли Apple да бъде Apple и просто да разработи нещо правилно? 05.05.2015
  • @lorddarq Изглежда ми доста добър за изпълнение на код на живо на симулатор на iOS. Не съм сигурен защо смятате, че това е хак, те очевидно са положили много работа, за да го накарат да работи със среда на iOS Simulator на живо. И работи наистина добре! 06.05.2015
  • Причината, поради която смятам, че е хак, е, че ако има времева линия, бих искал да работи, без да се налага да активирам симулатора за това. В противен случай защо да го стартирате във времевата линия, а не само на sim? Не е удобно. Освен това симът консумира допълнителни ресурси, без да връща никакви значителни предимства, освен да позволява използването на функцията за времева линия, което го прави неоптимален от моя гледна точка. 08.05.2015
  • @lorddarq Няма да работи в пълен iOS симулатор, без да стартира пълен iOS симулатор. Мисля, че е доста ясно. 09.05.2015
  • На Xcode 7.1 (7B91b) изглежда, че Run in Full Simulator е премахнат. Има ли заобиколно решение? 01.12.2015

  • 2

    Какво видя? Стигнах дотам, че видях изглед на сцена с цветен фон, който искам. Опитайте тази:

    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)
    

    Можете да го тествате чрез diff color и той го изобрази. Ако обаче добавя сфера към основния възел, нищо не се случва. И аз също виждам това в моя конзолен изход:

    2014-09-13 16:59:35.766 SceneKitPlayground[23682:13804922] Грешка при изпращане на реквизити за отлагане: 0x10000003

    Освен това, ако превключа нещото към OS X, същият код, който добавя сферата, ще работи.

    13.09.2014
  • Току-що разбрах, че не използвате SceneKit, а SpriteKit. Това не съм го пробвал. Може да е по-лошо, ако дори не стигнете до изглед с фонов цвят. 14.09.2014
  • И така, същото нещо се случва със SceneKit. Добре, интересно. Между другото, мисля, че причината да промените цвета на фона е, че го правите на изгледа, а не на сцената, като мен. Мога да направя view.backgroundColor = SKColor.greenColor() в моя код и това също се показва. 16.09.2014
  • Току-що видях тази грешка да се случва отново на детска площадка и този път правех само обикновени неща за UIView. Забравих какво направих... ще публикувам, ако го намеря. 18.09.2014
  • Да, получих това съобщение в изхода на конзолата, като правя само обикновени неща за UIView, ще публикувам подробностите като отделен отговор. 21.09.2014
  • Всъщност виновникът е XCPShowView(). Така че тази грешка може да не е полезна при отстраняване на грешки при проблема с изобразяването на SpriteKit или SceneKit. 21.09.2014
  • За съжаление виждам същото ... някой тук успял ли е да накара това да работи? 23.10.2014

  • 3

    Успях да го пусна, като отворих файловия инспектор, промених настройките на игралната площадка на OSX, след това обратно на iOS и поставих отметка на „Изпълни в пълен симулатор“. Това е в XCode 6.1.

    07.11.2014
    Нови материали

    Записване на грешки — Как да записвате грешки във вашето приложение, за да ги отстраните по-късно
    Записването на грешки е важна част от „обработването на грешки“. Накратко, когато възникнат определени грешки в програмите, вие искате да знаете за това. Това е особено важно при грешки. Ти..

    Кратко въведение в теорията на графите
    Кратко въведение в теорията на графите Втора част: внедряване на python на пълни графики В моята предишна статия въведох три основни концепции за графите: върхове, ръбове и тегла. В тази..

    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано, искам...
    Днес ще пиша за машинно обучение. Смятам се за ентусиаст, а не за експерт, така че имайте това предвид. С това казано искам да обясня защо машинното обучение има значение. За да бъда съвсем..

    Какво е структурно типизиране и как Typescript го използва в своя полза?
    Всички знаят тези дни, че „Typescript е строго синтактично надмножество на JavaScript и добавя незадължително статично въвеждане към езика.“. Но какво всъщност означава? Защо миграцията от..

    3 начина за премахване на дубликати от масив в Javascript
    Вие сте уеб разработчик? Програмист ли си? Тогава ще сте запознати с JavaScript и различните му вградени функции, методи и т.н. за различни реализации, проблеми и цели. Един от тези широко..

    Архитектура и обучение на конволюционни невронни мрежи (7 точки):
    Тази публикация предоставя подробности за архитектурата на Конволюционната невронна мрежа (CNN), функциите и обучението на всеки слой, завършвайки с резюме на обучението на CNN...

    Създайте разширение за Chrome с помощта на Angular
    Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..