我已经定义了这样一个宏,
#define SELECTED_SITE_ID (SITE_MANAGER.selectedSite.siteCollectionIdentifier)
它返回一个存储在用户默认值中的double值。
在代码中,SELECTED_SITE_ID
宏正在使用超过1000个这样的地方,
int a = SELECTED_SITE_ID;
NSArray *array = [someClassObject objectAtIndex:a-1];
当我的应用首次投放时,SELECTED_SITE_ID
宏返回0.0,已分配给int a;
,因此a
将为0
。< / p>
从数组开始,我已将a-1
写入0-1,这会导致崩溃问题。
我现在还不知道解决这个问题的快捷方法,因为它是在约。 1000个地方?
我的想法是什么?
我猜在宏内部?如果我能够检查,价值会是什么?如果它为0,那么我将明确地返回1.
任何帮助都将不胜感激。
答案 0 :(得分:2)
这很容易,
#define SELECTED_SITE_ID ((SITE_MANAGER.selectedSite.siteCollectionIdentifier <= 0.0) ? 1 : SITE_MANAGER.selectedSite.siteCollectionIdentifier)
答案 1 :(得分:0)
更好的方法是:
#define SELECTED_SITE_ID(SITE_MANAGER.selectedSite.siteCollectionIdentifier?:1)