Delegates in a NSOperation with ARC support

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Delegates in a NSOperation with ARC support

    Hallo Leute,
    im Rahmen einer Projektarbeit müssen wir eine iOS App entwickeln und da tue ich mich an der entsprechenden Umsetzung noch etwas schwer, da mein Team und ich aus der Java Welt kommen und ja. :|

    Vorweg möchte ich erwähnen, dass es mir neben einer Problemlösung auch darum geht, ob die von mir entwickelte Lösung in ihrer Form sinnvoll ist. ;)

    Die App soll eine Datei parsen und in lesbarer Form ausgeben. Der Parser selbst soll nur eine „ParseOperation” (NSOperation) erstellen, welche die Datei in einem ersten groben Versuch auseinander reißt in kleine „RecordOperation” (NSOperation). In den „RecordOperation” möchte ich die groben Schnippsel nun genau parsen und in meinen ObjectStorage entsprechend einlagern.

    Zur Kommunikation zwischen UI und Parser kommt folgendes Protocol zur Anwendung:

    PHP-Quellcode

    1. @class DHParser;
    2. @protocol DHParserDelegate
    3. @required- (void)parserDidFinishParsing:(DHParser *)parser;@optional- (void)parser:(DHParser *)parser didReceiveResponse:(id)data;- (void)parser:(DHParser *)parser didFailWithError:(NSError *)error;
    4. @end

    Ein ähnliches Protocol habe ich für die beiden Unterklassen von NSOperation angelegt, um eine Kommunikation zur „Haupt-”ParseOperation zu bekommen.

    PHP-Quellcode

    1. @protocol DHOperationDelegate
    2. @optional- (void)operation:(id *)operation didReceiveResponse:(id)data;- (void)operation:(id *)operation didFailWithError:(NSError *)error;- (void)operationDidFinishAction:(id *)operation;
    3. @end

    Nun laufe ich jedoch in Probleme mit ARC, da dieser mir nicht erlaubt eine self Referenze in meiner Delegate-Nachricht zu übergeben, z.B. in Form von „Implicit conversion of an Objective-C pointer to '__autoreleasing id *' is disallowed with ARC” oder „Incompatible pointer types sending 'DHParseOperation *const __strong' to parameter of type '__autoreleasing id *'”.

    Leider stehe ich an dieser Stelle total auf dem Schlauch was ich den jeweiligen Properties und Variablen für Attribute zuweisen muss, damit ARC seine Aufgabe machen kann und mir die Arbeit etwas leichter und ich eine ordentliche Kommunikation zwischen dein einzelnen Operationen zustande bekomme, damit ich später die Möglichkeit habe sinnvoll Fehler oder Erfolg in der App kund zu tun.

    Ich hoffe mir kann jemand den entscheidenen Hinweis zur Lösung dieses Problems liefern, denn aller Anfang ist wie wir wissen schwer.

    Gruß, Pyth0n