In meiner iOS App arbeite ich in einem Hintergrundthread (mit performSelectorInBackground
). In diesem Thread verwende ich NSJSONSerialization und seine Klassenmethoden, um eine JSON-Zeichenfolge zu analysieren:
Ist diese Klassenmethode ( JSONObjectWithData
) threadsicher? Kann ich mir da sicher sein? Wo ist es in der Dokumentation geschrieben?
Ich weiß, dass Instanzmethoden im Allgemeinen nicht threadsicher sind , es sei denn, die Dokumente sagen dies. Kann ich allgemein sagen, dass Klassenmethoden Thread-sicher sind , sofern nicht anders angegeben?
Ich rate ein bisschen hier.
Der Thread-Programmierhandbuch gibt
an >Unveränderbare Objekte sind im Allgemeinen Thread-sicher; Sobald Sie sie erstellt haben, Sie kann diese Objekte sicher an und von Threads übergeben.
Das Aufrufen einer Klassenmethode bedeutet das Senden einer Nachricht an das Klassenobjekt, und die Klassenobjekte sind unveränderlich. Meine Schlussfolgerung wäre, dass es sicher ist, Klassenmethoden von verschiedenen Theads aufzurufen.
Ich habe gerade eine ähnliche Frage im Apple Entwicklerforum gestellt. Die Antwort, die ich bekam, war, dass NSJSONSerialization threadsicher ist:
Tags und Links objective-c ios thread-safety cocoa