2016-04-17 9 views
1

von Apple DokumentationWelche NSOperation main() und start() Methoden

Main -

Für nicht-gleichzeitige Operationen, außer Kraft setzen Sie in der Regel nur eine Methode:

Haupt

Start -

Wenn Sie einer Vorgangswarteschlange einen Vorgang hinzufügen, ignoriert die Warteschlange den Wert der asynchronen Eigenschaft und ruft immer die Startmethode aus einem separaten Thread auf. Wenn Sie also immer Operationen mit ausführen, die zu einer Operationswarteschlange hinzugefügt werden, gibt es keinen Grund, sie asynchron zu machen ( ).

Wenn ich den Code von Alamofire ausführen muss, der bereits eine Operationswarteschlange verwendet und asynchron ist. Wo sollte ich den Code (Main oder Start) schreiben, um Alamofire-Anfrage aufzurufen.

+1

Haben Sie die ausführlichen Beschreibungen dieser beiden Funktionen in der d gelesen Dokumentation für 'NSOperation'? Wenn ja, worüber bist du dir nicht sicher? – rmaddy

+0

Ich habe die Frage speziell auf meine Bedürfnisse zugeschnitten. Vielen Dank –

Antwort

-1

Nun könnten Sie sowohl Main als auch Start als eine Linie Funktionen, die jeweils MyRealProcessingFunction aufrufen, die Ihre echte Arbeit ausführt.

1

Vielleicht habe ich nicht den Punkt Ihrer Antwort greifen, aber, wenn Sie Alamofire in Ihrem benutzerdefinierten Vorgang umbrechen müssen, müssen Sie eine asynchrone NSOperation erstellen.

Sie können ein sehr gutes Beispiel dafür in this Github repo finden.

Der entscheidende Punkt ist:

  • Überschreibung der asynchronous Eigenschaft true
  • Überschreibung der start Methode
  • die Kontrolle über die isExecuting und isFinished Eigenschaften, um zurückkehr den Zustand des Betriebes zu ändern
Verwandte Themen