iPhone: in einer Anwendung statische Bibliothek verwenden stürzt das Gerät aber nicht der iPhone-Simulator
-
20-09-2019 - |
Frage
Ich habe eine Bibliothek, die ich gemacht, und jetzt will ich es in einer Anwendung verwenden. Ich habe glaube ich, richtig in die Bibliothek verknüpft haben. Hier sind all die Dinge, die ich getan habe:
- Stellen Sie den Header-Suchpfad
- Stellen Sie anderen Linker-Flags auf "-ObjC"
- hinzugefügt die statische Bibliothek Xcode Projekt
- sorgt dafür, dass die lib.a als Rahmen Ziel aufgeführt wurde
- Hinzugefügt wurde die Bibliothek als direkte Abhängigkeit
Wie ich schon sagte im Titel habe ich erfolgreich die App mit der statischen Bibliothek im Simulator laufen. Wenn ich versuche, die Prüfung der App das Gerät verwenden, stürzt das zweite es eine Funktion aus der Bibliothek verwenden hat:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44'
2009-10-10 12:45:31.159 Basement[2372:207] Stack:
Lösung
Dies ist aufgrund eines Fehlers in der aktuellen SDK-Linker. Siehe diesen Beitrag für weitere Informationen über das Problem und mögliche Abhilfen. (Siehe auch href="https://stackoverflow.com/questions/1147676/categories-in-static-library-for-iphone-device-3-0">.)
Update:
Ein andere Sache, die Sie versuchen können, ist die statische Bibliothek zu entfernen, und schließen Sie die Quelle der Bibliotheksdatei direkt in dem Projekt Anwendung. Ich war eine ähnliche statische Bibliothek Verknüpfung Problem konfrontiert, und das ist, was ich auf dem Rücken landete fallen, um es erfolgreich laufen zu lernen. Wenn das funktioniert (allerdings grob eine Umgehung es auch sein mag), dann ist es definitiv ein Linker Problem.
Andere Tipps
Ich lief in dieses Problem vor kurzem. Ich war nicht in der Lage, die -all_load zur Arbeit zu kommen, wenn ich, dass eine andere Kategorie bemerkte ich DID Arbeit hatte. Ich war für diese Kategorie faul und enthalten sie in einer anderen Datei.
ich schließlich eine Dummy-Klasse erstellt (keine Methoden, Instanzvariablen) und umfasste die Umsetzung meiner Kategorien in der .m-Datei für die Dummy-Klasse. meine Kategorien Nachdem Sie das getan begann auch nachdem ich das -all_load Flagge entfernt arbeiten.
Dies war auf iPhone OS 3.1.3.
Dies ist sicherlich nicht der richtige Weg, es zu beheben, aber es schien zu funktionieren.
Vollbeispielcode ist auf meinem Blog für meine (triviale) Kategorien.