【发布时间】:2016-05-24 02:58:27
【问题描述】:
我有以下代码,在 Delphi Berlin (10.1) 的新项目中创建:
Procedure Test;
var
vRttiContext : TRttiContext;
vPackages : TArray<TRttiPackage>;
vTypes : Tarray<TRttiType>;
vType : TRttiType;
vPackage : TRttiPackage;
begin
vRttiContext:=TRttiContext.Create;
vPackages:=vRttiContext.GetPackages;
if (vPackages<>nil) then
for vPackage in vPackages do
begin
vTypes:=vPackage.GetTypes;
case vtype.TypeKind of
tkClass : ; //DoSomething
end;
end;
end;
此代码在 Win32 / Win64、Ios32 位下完美运行, 但不是 IOS64。
使用 Ios64 位,我在该行中遇到访问冲突:
vType:=vPackage.GetTypes
当然,我在编译选项中添加了“发出 RTTI 信息”。
【问题讨论】:
-
我看不出这段代码是如何工作的,因为您在访问
vType TypeKind之前没有为vType分配任何东西。你错过了第二个for循环。 -
你的if也不需要
-
我在复制此消息的代码时忘记了一行。但事实是,代码无论如何都会在“vTypes=vPackage.getTypes”行(在使用 vType 之前)创建访问冲突。
标签: ios delphi 64-bit rtti delphi-10.1-berlin