Xcode-预处理程序指令检查正在使用哪个SDK

| 我正在对使用\“ addTimeInterval:\”函数的现有库进行一些更改,该函数在OS X v10.6中已弃用。我想使用预处理指令禁止警告,以检查当前内部版本使用的SDK版本。像这样:
NSDate *newDate= nil;

#if OS X v10.6 (or newer)
newDate= [someOtherDate dateByAddingTimeInterval:60];
#else
newDate= [someOtherDate addTimeInterval:60];
#endif
使用Xcode 4完全可以吗?     
已邀请:
自10.0以来一直存在的ѭ1怎么样? 也许不用进行编译时检查,而可以进行运行时检查:
if ([[NSDate class] instancesRespondToSelector:@selector(dateByAddingTimeInterval:)]) {
  newDate = [someOtherDate dateByAddingTimeInterval:60];
} else {
  newDate = [someOtherDate addTimeInterval:60];
}
    
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
    newDate = [someOtherDate dateByAddingTimeInterval:60];
#else
    newDate = [someOtherDate addTimeInterval:60];
#endif
但是,如果您使用10.6 SDK进行构建,则它不适用于10.5。需要像@Dave所说的运行时检查。     
您可以使用我在CLLocation getDistanceFrom:vs distanceFromLocation中描述的完全相同的技术: 只需在说明中将
CLLocation
替换为
NSDate
,将
getDistanceFrom:
替换为
addTimeInterval:
,将
distanceFromLocation:
替换为
dateByAddingTimeInterval:
,无论您使用的是哪个SDK,无论运行的是哪个OS版本,都可以始终使用
dateByAddingTimeInterval:
。     

要回复问题请先登录注册