Erzeugt performSelectorInBackground
einen neuen Thread für jeden Anruf oder teilt er einen Thread (der nicht Hauptthread ist) für alle Anrufe (möglicherweise in der Warteschlange)?Erstellt performSelectorInBackground einen neuen Thread für jeden Anruf?
Antwort
Ein neuer Thread wird bei jedem Aufruf erstellt -performSelectorInBackground:withObject:
Vom Threading Programming Guide
NSObject Mit
In iOS und Mac OS X v10.5 einem Thread Spawn und später , alle Objekte haben die Fähigkeit, einen neuen Thread zu generieren und ihn zum Ausführen einer ihrer Methoden zu verwenden. Die performSelectorInBackground: withObject: -Methode erstellt einen neuen gelöschten Thread und verwendet die angegebene Methode als Einstiegspunkt für den neuen Thread. Zum Beispiel, wenn Sie einen Gegenstand (dargestellt durch die Variable myObj) haben und das Objekt hat eine Methode namens doSomething, die Sie in einem Hintergrund-Thread ausgeführt werden sollen, könnten Sie könnten den folgenden Code verwenden, das zu tun:
[myObj performSelectorInBackground:@selector(doSomething) withObject:nil];
Die Wirkung des Aufrufs dieser Methode ist dieselbe, als ob Sie den detachNewThreadSelector: toTarget: withObject: Methode von NSThread mit dem aktuellen Objekt, Selektor und Parameterobjekt als Parameter aufgerufen hätten. Der neue Thread wird sofort mit der Standardkonfiguration erstellt und beginnt zu laufen. Innerhalb des Selektors müssen Sie den Thread wie jeden anderen Thread konfigurieren. Beispielsweise müssten Sie einen Pool für die automatische Freigabe einrichten (wenn Sie keine Speicherbereinigung verwenden) und die Ausführungsschleife des Threads konfigurieren, wenn Sie diese verwenden möchten. Weitere Informationen zum Konfigurieren neuer Threads finden Sie unter "Konfigurieren von Thread-Attributen".
- 1. Wie erstellt man einen Server, der für jeden Client einen neuen Thread erstellt?
- 2. Aufruf performSelectorInBackground: von Hintergrund thread
- 3. Java-Callback für einen neuen Thread ausführen
- 4. Server vergibt keinen Thread für jeden neuen Client (Sockets)
- 5. Warte Anruf für einen bestimmten Thread
- 6. Mehrere parallele. Für jeden Anruf, MemoryBarrier?
- 7. pid für neuen Thread
- 8. ASP.NET Postback erstellt einen neuen Thread und eine neue Sitzung
- 9. Lokale Benachrichtigungen für einen neuen Thread festlegen?
- 10. Verwendet Stream.parallel() einen neuen Thread?
- 11. Erstellt Tomcat einen Thread pro Benutzer?
- 12. Android Stopp Runnable in neuen Thread erstellt
- 13. Wenn wir einen neuen .NET-Thread erstellen und starten, erstellt er dann einen neuen Thread auf Betriebssystemebene?
- 14. Erstellt R-Server oder Shiny Server für jeden Benutzer einen neuen R-Prozess/Instanz?
- 15. Log4j Konfiguration: Wie erstellt man einen neuen Ordner für jeden Tag?
- 16. Gibt es einen Stack-Platz für jeden Thread?
- 17. Verwendet boost :: asio :: deadline_timer einen Thread für jeden Timer?
- 18. Log4j 2 verschiedene Protokolldateien für jeden Thread
- 19. Bruchlinien für jeden neuen Satz von Daten
- 20. Warum müssen wir NSAutoreleasepool für jeden Thread verwenden?
- 21. docker run Erstellen eines neuen Datenvolumens für jeden Lauf
- 22. Erstellt IE einen neuen Bereich für jedes Skript-Tag?
- 23. Neue Flex-Sitzung für jeden AMF-Anruf in BlazeDS
- 24. Android erstellt programmatisch einen neuen Kalender?
- 25. Speicherverwaltung und performSelectorInBackground:
- 26. Einen EventHandler für einen Thread ausführen
- 27. Wie profiliere ich jeden Anruf einer Funktion?
- 28. Hinzufügen von Java-Klasse-Methoden in einen neuen Thread
- 29. Was hält C++ 11 für einen "Thread"?
- 30. Warum neuen Thread statt Zukunft {...}
Die offiziellen Dokumente sind normalerweise sehr hilfreich. Danke Jona. –