我有一个应该在MACOS和IOS上运行的应用程序。 不知何故,两个代码都是在编译IOS时执行的,它让我发疯:
procedure TForm1.Button1Click(Sender: TObject);
begin
{$IfDef MacOs}
ShowMessage('MACOS');
{$Endif}
{$IfDef IOS}
ShowMessage('IOS');
{$Endif}
end;
在任何IOS设备上运行时,都会显示这两条消息。
换句话说,IOS应用程序执行为MACOS定义的任何代码
有什么想法吗?
答案 0 :(得分:1)
这是设计使然,您可以在文档中的Conditional Compilation中看到。
如果要区分iOS和OSX,请使用MACOS
(OSX)和CPUARM
(IOS)预定义常量,这两个常量都列在平台我上面链接的文档部分。
正如Remy Lebeau在下面的评论中指出的那样,在iOS模拟器下运行时这并不有效。为了正确区分这两者,您需要使用{$IF defined(MACOS) and not defined(IOS)}
。