Frage

Ich kann nicht scheinen, um ein Bild zu laden, aber ich bin sicher, dass es auf dem Weg ist, ich angeben.

Hier ist der Code, um das Bild zu laden versucht:

- (UIImage*) CPPlistImageToUIImage: (NSString *) CPPlistImage {
    /*TODO: Is this a memory leak? Find out*/
    UIImage * ret = [UIImage imageNamed: CPPlistImage];
    if(ret == nil){
        RDLogString(@"Warning: Failed to load image: \"%@\"", CPPlistImage);
    }

    return ret;
}

Und hier ist eine Funktion, die alle Dateien in dem Verzeichnis aufgelistet, wo diese Funktion aussieht:

- (void) lsOwnDirectory {
    NSError * error = [[NSError alloc] init];
    NSArray * files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: pathToOwnDirectory error: &error];

    for(NSString * file in files){
        RDLogString(@"%@", file);
    }
}

Und hier ist ein Beispiel für die Ausgabe der beiden Funktionen im gleichen Lauf:

// CPPlist...Image telling he can't find/load the image
2009-11-29 02:12:51.510 CPPlayer[6452:207] CPConversation.m:113 Warning: Failed to load image: "/Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56-4F05-B4C1-C21DAAF918A2/CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt/OIGNONS.png"
...
// lsOwnDirectory is called AFTER CPPList...Image
2009-11-29 02:12:51.557 CPPlayer[6452:207] RootViewController.m:81 Contents of /Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56-4F05-B4C1-C21DAAF918A2/CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt
2009-11-29 02:12:51.566 CPPlayer[6452:207] CPConversation.m:133 audio
2009-11-29 02:12:51.567 CPPlayer[6452:207] CPConversation.m:133 CPConversation.plist
2009-11-29 02:12:51.568 CPPlayer[6452:207] CPConversation.m:133 CPData.sqlite
2009-11-29 02:12:51.569 CPPlayer[6452:207] CPConversation.m:133 images
2009-11-29 02:12:51.570 CPPlayer[6452:207] CPConversation.m:133 OIGNONS.png

Ich habe keine Ahnung, warum es die Datei nicht finden kann. Eine Funktion sieht, die andere nicht, sie scheinen in demselben Verzeichnis suchen ...

Jede Hilfe, sehr geschätzt,

Vielen Dank im Voraus, Nick

Edit: Ich habe vergessen, hinzuzufügen, dass der Code ausgeführt wird und von Xcode für das iPhone OS 3.0 zusammengestellt. Sie haben wahrscheinlich, dass aus den Tags, aber immer noch.

War es hilfreich?

Lösung

-[UIImage imageNamed:] keinen vollständigen Pfad zur Bilddatei übernehmen - es nimmt nur einen Dateinamen und sucht dann nach einem Bild mit dem Dateinamen in dem Hauptbündel der Anwendung. Deshalb ist es nil. -[UIImage imageWithContentsOfFile:], auf der anderen Seite erwartet einen vollständigen oder teilweisen Pfad zur Datei. Der Hauptunterschied zwischen den beiden ist, dass Konstruktoren Imagenamed: das Bild speichert intern (in einem privaten Cache spezifisch UIImage), während imageWithContentsOfFile. Wird das Bild nicht zwischenzuspeichern

Nebenbei bemerkt: Nein, das ist nicht ein Speicherverlust. Sie verwenden einen Komfort Konstruktor, der für Cocoa an die Speichermanagementregeln nach sollte ein Autoreleased Objekt zurück, das Sie nehmen nicht das Eigentum an, wenn Sie es an anderer Stelle ausdrücklich beibehalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top