Cocoa benutzt CS3 mit dem Trick, ein Cocoa-Bundle in den main Carbon plugin bundle , lade es von Carbon und erstelle eine NSApplicationLoad (). Das liegt daran, dass Photoshop CS3 nur Carbon war und zum Entladen der Plugin-Bundles verwendet wurde.
Photoshop CS4 verwendet Cocoa und verfügt über einen eigenen NSAutorelease-Pool im Hauptthread.
In Photoshop CS4 funktionieren sehr einfache window-basierte xibs / nibs, die von einem NSWindowController geladen werden.
Aber fügen Sie einfach eine Bindung zu einem Steuerelement im Fenster hinzu und Sie werden lustige Abstürze bekommen, wahlweise wenn Sie das Fenster schließen, oder wenn Sie das Plugin zum zweiten Mal benutzen oder wenn Sie Photoshop selbst schließen.
Warum scheint alles gut zu funktionieren, bis ich einige fortgeschrittene Cocoa-Funktionen verwende? Ich stecke fest.
BEARBEITEN : Ich habe wirklich die Lösung für das umfassendere Problem gefunden "Wie verwende ich Cocoa in einem Photoshop CS3 / CS4 Plugin?". Siehe unten.
Sie müssen ein neues Loadable Bundle Ziel erstellen, das Ihre Nibs und Ihren Cocoa-Code enthält. Fügen Sie das Bundle-Produkt der Phase Bundle-Ressourcen kopieren Ihres Plugins hinzu. Dann wäre der Code für ein Filter-Plugin, das ein Cocoa-Fenster mit einigen Steuerelementen lädt:
%Vor%Dies basiert auf dem Craig Hockenberry Bündeltrick . Ich teste es immer noch, aber es sollte sowohl auf CS3 als auch auf CS4 funktionieren.
Ich habe gerade angefangen, ein Cocoa-basiertes Plugin für CS4 zu schreiben. Wirklich, es gibt fast keine Informationen zu diesem Thema, und ich habe es herausgefunden, während ich gehe.
Ich bin seit 10 Jahren Java und Ruby Programmierer, also ist mein C / C ++ foo rostig und ich lerne gerade Objective C, während ich gehe. Zwei "Gotchas", denen ich begegnet bin, nur für den Fall ....
CS2 lädt PowerPC Mach-O Code so einfach wie CS3 / CS4. Hat jemand diesen Cocoa-Ansatz in CS2 getestet?
Zur Zeit verwende ich Carbon für CS2 / CS3 / CS4, da dies garantiert überall funktioniert, wo das Plugin geladen wird; und Cocoa für CS5 natürlich, ob 32 oder 64 Bit.
Chris Cox ist nicht optimistisch, dass Cocoa in etwas anderem als CS5 arbeitet: Ссылка
Also, was ist hier wirklich los? Es ist ziemlich schwer, Ratschläge aus dem Maul des Pferdes zu ignorieren.
Tags und Links objective-c cocoa photoshop