Как правильно связать библиотеку Apple iOS? - PullRequest
0 голосов
/ 24 сентября 2018

В delphi Tokyo, если вы посмотрите, например, iOSapi.MapKit.pas, вы можете увидеть, что раздел инициализации запускается, только если NOT defined(CPUARM) (в основном, раздел инициализации выполняется только для симулятора iOS):

{$IF defined(IOS) and NOT defined(CPUARM)}

initialization

MapKitModule := dlopen(MarshaledAString(libMapKit), RTLD_LAZY);

finalization

dlclose(MapKitModule);
{$ENDIF IOS}

Но когда вы видите iOSapi.CoreTelephony.pas, это не тот случай:

initialization
  CoreTelephonyModule := dlopen(MarshaledAString(libCoreTelephony), RTLD_LAZY);

finalization
  dlclose(CoreTelephonyModule);

end.

Есть идеи почему?Сегодня я сталкиваюсь со странной ошибкой, я реализую PHPhotoLibrary (Photos Framework) так же, как они делают с iOSapi.MapKit.pas, так что я делаю

{$IF defined(IOS) and NOT defined(CPUARM)}

initialization

PhotosModule := dlopen(MarshaledAString(libPhotos), RTLD_LAZY);

finalization

dlclose(PhotosModule);

{$ENDIF IOS}

, и это работает в моем ipad Pro, но не на iphone 7, где у меня ошибка:

Не удалось найти класс ObjectiveC PHPhotoLibrary

при выполнении TPHPhotoLibrary.OCClass.authorizationStatus

удаление {$IF defined(IOS) and NOT defined(CPUARM)} заставляет код работать корректно на Iphone 7. Итак, какому правилу следовать, чтобы правильно связать библиотеку Apple Ios (Библиотека из инфраструктуры Apple)?всегда используете длопен или нет?

...