为任何移动设备编译时不推荐使用 TList

TList deprecated when compiling for any mobile device

我有一个 Delphi 移动应用程序,其中包含以下声明:

TWJInformationList = class(TList)

当我为任何移动设备(Android、iOS 32 位设备、iOS 64 位设备和 iOS 模拟器)编译此应用程序时,我得到以下警告:

[DCC Warning] WJInformation.pas(248): W1000 Symbol 'TList' is deprecated

以上在所有其他目标平台(32 位和 64 位 Windows 和 OSX)上编译良好。

我错过了什么?

在所有基于 ARC 的平台上,包括 Android、iOS、 Linux 1(不是移动平台),旧的基于 Pointer 的容器,如 Classes.TListSystem.Contnrs 单元中的容器,已被弃用,因为它们使用起来不安全基于 ARC 的 object/interface 指针。您需要在 System.Generics.Collections 单元中使用较新的基于泛型的对应项,例如 TList<T>,以便编译器可以正确管理 ARC。如果您不 want/need ARC 处理,TList 的直接替代将是 TList<Pointer>

1: 和 maybe Windows 在未来。

使用 Delphi 版本 10.4,System.Contnrs 似乎适用于所有平台