Thursday 2 March 2017

Warten Sie Die Erwartungenwithtimeout Objective C

Einführung Objective-C ist die native Programmiersprache für die Betriebssysteme Apples iOS und OS X. Es ist eine kompilierte, allgemeine Sprache, die in der Lage ist, alles von Befehlszeilenprogrammen zu animierten GUIs zu Domäne-spezifischen Bibliotheken zu erstellen. Es bietet auch viele Werkzeuge für die Pflege großer, skalierbarer Frameworks. Wie C, wurde Objective-C entworfen, um objektorientierte Features zu C hinzuzufügen, aber die beiden Sprachen vollbrachten dies mit fundamental unterschiedlichen Philosophien. Ziel-C ist entscheidend dynamischer und verzögert die meisten seiner Entscheidungen zur Laufzeit und nicht zur Kompilierungszeit. Dies spiegelt sich in vielen der Design-Muster zugrunde liegenden iOS und OS X-Entwicklung. Objective-C ist auch bekannt für seine ausführlichen Namenskonventionen. Der resultierende Code ist so beschreibend, dass es praktisch unmöglich ist, sie zu missverstehen oder zu missbrauchen. Beispielsweise zeigt das folgende Snippet einen C-Methodenaufruf mit seinem Objective-C-Äquivalent. Wie Sie sehen können, lesen Objective-C-Methoden mehr wie eine menschliche Sprache als ein Computer ein. Sobald Sie sich daran gewöhnen, wird es sehr einfach, sich in neuen Projekten zu orientieren und mit Drittanbieter-Code zu arbeiten. Wenn Sie ein wenig durch die eckigen Klammern entwaffnet sind, sorgen Sie sich nicht. Youll ganz bequem mit ihnen durch das Ende des Tutorials. Frameworks Wie bei den meisten Programmiersprachen ist Objective-C eine relativ einfache Syntax, die durch eine umfangreiche Standardbibliothek unterstützt wird. Dieses Tutorial konzentriert sich hauptsächlich auf die Sprache selbst, aber es hilft, zumindest eine Vorstellung von den Tools, die youll interagieren mit in der realen Welt haben. Es gibt ein paar verschiedene Standard-Bibliotheken gibt, aber Apples Cocoa und Cocoa Touch Frameworks sind bei weitem die beliebtesten. Diese definieren die API für den Aufbau OS X bzw. iOS apps. Die folgende Tabelle zeigt einige der wichtigsten Rahmenbedingungen für Kakao und Kakao. Für eine ausführlichere Diskussion, besuchen Sie bitte die Mac Technology Overview oder iOS Technology Overview. Ich hatte das gleiche Problem. Der Fix für mich schien das Timeout-Intervall zu erhöhen. Ich hatte ursprünglich ein Timeout Intervall von 1 und erhöhte es auf 5 nur auf der sicheren Seite sein. Scheint jetzt gut zu funktionieren. Im nicht sicher, wie lang Ihr async Anruf nimmt, oder wenn Sie ein längeres Timeoutintervall als 1 leisten können, aber sein wert ein Schuß. Ich antwortete, in 50 Fällen half es. Sie können im Code sehen, den ich gepostet habe, dass async gerade Abfertigung danach ist, das 0.5s wartet. Am Ende bin ich niling die Erwartung nach Wartezeitblock und alle behauptet auch nach Warteblock. So geschieht nichts während des Wartens, sondern erfüllt. Ndash Micha Hernas Swift hat es besondere Schwierigkeiten, den richtigen Ausnahmestopppunkt zu zeigen, wenn Verschlüsse im gleichen Bereich vorhanden sind. Ive gesehen das gleiche Problem in einer XCTestCase, die dispatchafter verwendet und sogar durch den Ausnahme-Haltepunkt war die gleiche Zeile wie waitForExpectationsWithTimeout der Testfall stürzte wegen eines Downcast auf einem Null-Objekt. Ich weiß, das ist nicht dein Fall, aber wenn dies geschieht, schlage ich vor, Entfernen von Anweisungen eine Zeile zu einer Zeit und Ausführen des Tests nach jeder Entfernung. Wenn der Test nicht abstürzt, haben Sie den Täter identifiziert. Dies ist leider die beste Option zum Zeitpunkt dieses Schreibens, wenn Swift zeigt einen Ausnahme-Haltepunkt auf einer Linie, die keinen Sinn macht, vor allem die berüchtigte Linie 0 einer Klasse, die Sie möglicherweise in Crash-Reporting-Tools zu sehen. Lassen Sie uns wissen, wenn Sie Ihren Crash herausgefunden haben. Ich hatte das gleiche Problem. Der Fix für mich schien das Timeout-Intervall zu erhöhen. Ich hatte ursprünglich ein Timeout Intervall von 1 und erhöhte es auf 5 nur auf der sicheren Seite sein. Scheint jetzt gut zu funktionieren. Im nicht sicher, wie lang Ihr async Anruf nimmt, oder wenn Sie ein längeres Timeoutintervall als 1 leisten können, aber sein wert ein Schuß. Ich antwortete, in 50 Fällen half es. Sie können im Code sehen, den ich gepostet habe, dass async gerade Abfertigung danach ist, das 0.5s wartet. Am Ende bin ich niling die Erwartung nach Wartezeitblock und alle behauptet auch nach Warteblock. So geschieht nichts während des Wartens, sondern erfüllt. Ndash Micha Hernas Swift hat es besondere Schwierigkeiten, den richtigen Ausnahmestopppunkt zu zeigen, wenn Verschlüsse im gleichen Bereich vorhanden sind. Ive gesehen das gleiche Problem in einer XCTestCase, die dispatchafter verwendet und sogar durch den Ausnahme-Haltepunkt war die gleiche Zeile wie waitForExpectationsWithTimeout der Testfall stürzte wegen eines Downcast auf einem Null-Objekt. Ich weiß, das ist nicht dein Fall, aber wenn dies geschieht, schlage ich vor, Entfernen von Anweisungen eine Zeile zu einer Zeit und Ausführen des Tests nach jeder Entfernung. Wenn der Test nicht abstürzt, haben Sie den Täter identifiziert. Dies ist leider die beste Option zum Zeitpunkt dieses Schreibens, wenn Swift zeigt einen Ausnahme-Haltepunkt auf einer Linie, die keinen Sinn macht, vor allem die berüchtigte Linie 0 einer Klasse, die Sie möglicherweise in Crash-Reporting-Tools zu sehen. Lassen Sie uns wissen, wenn Sie herausgefunden haben, Ihre Crash. Asynchronous Unit Testing in Xcode 6 Im letzten Jahr habe ich eine Methode zur Durchführung von Asynchronous Unit-Tests in Xcode 5 beschrieben. Let8217s erinnern uns an das Problem mit Asynchron-Unit-Tests. Viele APIs auf der iOS-Plattform selbst sind asynchron. Sie haben Callback-Aufrufe, um zu signalisieren, wenn sie abgeschlossen sind, und diese können in verschiedenen Warteschlangen laufen. Sie können Netzwerkanforderungen stellen oder an das lokale Dateisystem schreiben. Dies können zeitraubende Aufgaben sein, die im Hintergrund ausgeführt werden müssen. Dies verursacht ein Problem, weil Tests selbst synchron ausgeführt werden. Daher müssen unsere Tests warten, bis sie benachrichtigt werden, wenn die laufende Aufgabe abgeschlossen ist. Ich schlug eine Methode vor, die das Setzen eines booleschen Flags in der Unit-Test und Looping in einer while () - Schleife, bis das Flag auf false gesetzt wurde, so dass der Test ordnungsgemäß abgeschlossen. Diese Methode arbeitete die meiste Zeit, aber ich habe nie mit ihm zufrieden gewesen, in Bezug auf es als ein bisschen kludge. In diesem Blog-Post schloss ich: Ich habe noch meine Vorbehalte über diese Technik, und Im noch auf der Suche nach der perfekten Lösung für die asynchrone Unit-Tests in Xcode. Sie würden denken, dass Apple könnte eine Lösung in XCTest, vielleicht ähnlich wie die Implementierung in GHUnit zur Verfügung gestellt haben. Here8217s, was die Objective-C-Version eines bare Knochen Beispiel asynchrone Einheit Test in Xcode 5 mit der alten Methode sieht aus wie: Aktuelle Beiträge Beliebte Beiträge Kategorien


No comments:

Post a Comment