Gibt es eine Möglichkeit, einen Block mit einem primitiven Parameter nach einer Verzögerung aufzurufen, z. B. performSelector:withObject:afterDelay:mit einem Argument wie int/ double/
Grand Central Dispatch (GCD) bietet einen einfachen und robusten Mechanismus für gleichzeitige und asynchrone Vorgänge, hauptsächlich unter Apple-Betriebssystemen (z. B. iOS, macOS, watchOS und tvOS), aber auch unter FreeBSD und MidnightBSD.
Gibt es eine Möglichkeit, einen Block mit einem primitiven Parameter nach einer Verzögerung aufzurufen, z. B. performSelector:withObject:afterDelay:mit einem Argument wie int/ double/
Ich habe das iBook von Apple durchgesehen und konnte keine Definition dafür finden: Kann jemand die Struktur von erklären dispatch_after? dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block:
Ich lerne etwas über gleichzeitiges Programmieren für iOS. Bisher habe ich über NSOperation/NSOperationQueue und gelesen GCD. Was sind die Gründe für die Verwendung von NSOperationQueueover GCDund umgekehrt? Klingt nach beidem GCDund NSOperationQueueabstrahiert die explizite Erstellung...
In Swift 2 konnte ich dispatch_aftereine Aktion mit Grand Central Dispatch verzögern: var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // your function here }) Dies scheint jedoch...
In Swift 2 konnte ich eine Warteschlange mit folgendem Code erstellen: let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) Dies wird jedoch in Swift 3 nicht kompiliert. Was ist die bevorzugte Methode, um dies in Swift 3 zu
Wenn Sie auf iOS 4.0 oder höher abzielen können Ist es mit GCD der beste Weg, Singleton in Objective-C (thread-sicher) zu erstellen? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return...
Ich habe einen Rückruf, der von jedem Thread kommen könnte. Wenn ich diesen Rückruf erhalte, möchte ich eine bestimmte Aufgabe im Hauptthread ausführen. Muss ich überprüfen, ob ich bereits im Haupt-Thread bin - oder gibt es eine Strafe, wenn ich diese Überprüfung nicht durchführe, bevor ich den...
Ich habe viel Code in Swift 2.x (oder sogar 1.x) Projekten, der so aussieht: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the main thread to...
Bei Verwendung von GCD möchten wir warten, bis zwei asynchrone Blöcke ausgeführt und ausgeführt wurden, bevor wir mit den nächsten Ausführungsschritten fortfahren. Was ist der beste Weg das zu tun? Wir haben Folgendes versucht, aber es scheint nicht zu
In meiner App habe ich eine Funktion, die eine NSRURLSession erstellt und eine NSURLRequest mit sendet sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error) Im Abschlussblock für diese Aufgabe muss eine Berechnung durchgeführt werden, die dem aufrufenden Ansichtscontroller ein...
Ich teste Code, der asynchrone Verarbeitung mit Grand Central Dispatch ausführt. Der Testcode sieht folgendermaßen aus: [object runSomeLongOperationAndDo:^{ STAssert… }]; Die Tests müssen warten, bis der Vorgang abgeschlossen ist. Meine aktuelle Lösung sieht folgendermaßen aus: __block BOOL...
Ich möchte, dass eine for-in-Schleife eine Reihe von Netzwerkanforderungen an firebase sendet und die Daten dann an einen neuen View-Controller weiterleitet, sobald die Ausführung der Methode abgeschlossen ist. Hier ist mein Code: var datesArray = [String: AnyObject]() for key in locationsArray {...
Ich habe mit Erfolg Grand Central Dispatch in meinen Apps verwendet, aber ich habe mich gefragt, was der wahre Vorteil der Verwendung von so etwas ist: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff oder auch dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff Ich meine, in...
Ich habe eine serielle Warteschlange wie folgt erstellt: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Was ist der Unterschied zwischen so dispatch_asyncgenannt dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{...
Ich habe Probleme, die gleichzeitigen und seriellen Warteschlangen in GCD vollständig zu verstehen. Ich habe einige Probleme und hoffe, dass mir jemand klar und genau antworten kann. Ich lese, dass serielle Warteschlangen erstellt und verwendet werden, um Aufgaben nacheinander auszuführen. Was...
Ich habe eine Methode, die einen Block und einen Abschlussblock akzeptiert. Der erste Block sollte im Hintergrund ausgeführt werden, während der Abschlussblock in der Warteschlange ausgeführt werden sollte, in der die Methode aufgerufen wurde. Für letztere habe ich immer verwendet...
Wie kann ich meinen Code warten lassen, bis die Aufgabe in DispatchQueue abgeschlossen ist? Benötigt es einen CompletionHandler oder so? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // - this will contain nil,...
Ich lese die Dokumentation von Apple zum Thema "Speicherverwaltung für Versandwarteschlangen": Selbst wenn Sie eine durch Müll gesammelte Anwendung implementieren, müssen Sie Ihre Versandwarteschlangen und andere Versandobjekte beibehalten und freigeben. Grand Central Dispatch unterstützt das...
Was ist die neue Syntax dispatch_oncein Swift nach den Änderungen in Sprachversion 3? Die alte Version war wie folgt. var token: dispatch_once_t = 0 func test() { dispatch_once(&token) { } } Dies sind die Änderungen an libdispatch , die vorgenommen
Kann jemand mit wirklich klaren Anwendungsfällen erklären, wozu der Zweck von dispatch_syncin GCDdient? Ich kann nicht verstehen, wo und warum ich das verwenden müsste. Vielen Dank!