我有靶向在Mac OS X 10.4和10.5,其中10.5是基SDK的一个项目。

-[NSString stringByReplacingOccurrencesOfString:withString]有些方法是在10.4不可用。我可以实现手动功能。另一种选择是,以实现该方法作为一个类别,但将与10.5落实一盘散沙,这件事情我想避免的。

那么,如何实现10.4这样的方法不搞乱10.5,以这样的方式,我可以当我决定停止支持10.4容易取出执行?

有帮助吗?

解决方案

我认为你必须使用的 +load+initialize 在运行时加载的方法如果该方法没有已经存在。

其他提示

if ([myString respondsToSelector: @selector(stringByReplacingOccurrencesOfString:withString:)])
{
  // 10.5 implementation
}
else
{
  // 10.4 implementation
}

使用一个类别,但放置在方法名标签;例如,stringByReplacingOccurrencesOfString_TigerCompatible:。在实现中,调用其中豹纹的实施或你自己的。

当你去豹只,为“TigerCompatible”做一个项目搜索,然后博恩奈特所有的这些方法和未标记的所有他们的呼叫站点。

放入类别中的所有丢失的实施方式,其中在主要装载在启动(束)如果老虎下运行。

如何使用C预处理宏插入相关的方法,如果它被建为10.4?也许尝试在一个类别做这样的事情,所以只包括那些不上10.4存在方法,如果它被建为10.4?

#if defined(MAC_OS_X_VERSION_10_4) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
// Put your implementations of the methods here
#endif

你需要支持10.4?如果您使用的是您的应用程序的核心部分仅10.5方法,那么它可能是时候考虑去10.5只。

总之,用具体的例子上面给出的,我建议从移开,使您的字符串的可变副本,以便您可以使用的NSMutableString类似的方法,确实在10.4的工作

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top