Hi,
ich packe das mal in einen separaten Thread und nicht in
https://www.delphipraxis.net/208459-fairplay-apple.html. Eigentlich wollte ich ja nur helfen, aber bin dabei über ein Problem gestolpert welches mich seit ein paar Stunden beschäftigt.
Für obiges Beispiel muss man eine Klasse mit einem Interface AVContentKeySessionDelegate erstellen. Das Interface befindet sich in der Macapi.AVFoundation
unit. Sobald man aber die Klasse instanziiert, stürzt die Anwendung im constructor TOCLocal.Create;
bei Reg := TRegisteredDelphiClass.RegisterClass(CType, GetObjectiveCClass); ab.
Genauer gesagt es schlägt
if class_addMethod(ObjCClassId, sel_registerName(M.AsAnsi(MethodName, CP_UTF8).ToPointer),
fehl und FailRegistration wird ausgeführt, was dann zum beenden der Anwendung führt.
Der Grund (nach einigem Trial und Error) sind scheinbar folgende Routinen:
Delphi-Quellcode:
procedure contentKeySession(session: AVContentKeySession;keyRequest: AVContentKeyRequest); overload; cdecl;
procedure contentKeySession(session: AVContentKeySession;keyRequest: AVPersistableContentKeyRequest); overload; cdecl;
Sobald man eine der beiden Funktionen davon ausklammert, bzw. einen Parameter hinzufügt stürzt die Anwendung nicht mehr ab. Ich denke mal der Grund ist, dass zwar beides vom Compiler akzeptiert wird, aber bei den beiden Interfaces die übergeben werden nicht mehr weiterweiß.
Anbei habe ich mal eine einfache Beispielanwendung gepackt. Vielleicht hat ja jemand eine Idee wie man das Problem umgehen kann.
Christian