繁体   English   中英

iOS中的方案或目标

[英]Schemes or Targets in iOS

我有一个根据不同环境而有所不同的项目,因此该项目是完全相同的,只是URL有所更改。 通常,我有访问虚拟Web服务的工作环境,然后当需要开始使用客户端的Web服务时,我只想快速切换这些URL。 为此,我的最初想法是根据每个Web服务端点具有不同的plist文件(客户端可以具有多个URL:预生产,测试,生产)。 所以:

  1. 这是我最好的选择吗? 每个Web服务端点都有不同的plist吗? (同样,项目完全相同,只是端点不同)

  2. 为每个不同的环境创建新目标是否有意义? 还是我可以在相同目标的方案中做到这一点?

根据您需要更改的参数数量,您可以使用宏进行更改,例如。

#define _DEBUG_MODE
  NSString endpoiunt = @"foo";
#elseif
  NSString endpoiunt = @"foo";
#endif

然后,您可以轻松地为调试方案附加一个编译器标志,在其中声明宏而不必担心必须使用其他目标。

如果您更喜欢保留.plist文件,则可以轻松地使用相同的方法,但是可以更改文件名,而不必对端点进行硬化。 但是除非使用两个目标,否则您都将两个复制者都复制到了软件包中(我想甚至有可能在复制阶段有条件地包含文件,但是不确定如何做)

对于简单的情况,可以采用以下方法:

MONAppsWebServiceURL.h

NSURL * MONAppsWebServiceURL(void);

MONAppsWebServiceURL.m

#import "MONAppsWebServiceURL.h"

#define MON_APP_USE_DUMMY_SERVICE 1

NSURL * MONAppsWebServiceURL(void) {
#if MON_APP_USE_DUMMY_SERVICE
// perhaps you want warnings as errors for distro
#warning using dummy web service
  return the dummy url;
#else
  return the real url;
#endif
}

进行更改时,这需要更改和重新编译一个文件。 此方法还可以用于标识要加载的plist(只要在发货前将其删除)。

当然,对于更复杂的问题,还有更复杂的解决方案,但这可能是您所需要的。 如我所见,在这种情况下,不需要任何方案或其他目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM