1
9
你对GCD的直觉是正确的。事实上,任何使用块的API都是不存在的,除非您将代码条件化为只在雪豹上运行。如果代码要支持仅在Snow Leopard上可用的功能,这是有意义的,但是如果它是您也要在Leopard上支持的功能,那么您也可以在所有情况下都使用Leopard代码路径,添加一个不向用户提供任何可见改进的Snow Leopard特定路径只会使代码A复杂化。增加你的测试开销。 这尤其适用于线程管理或GCD之类的事情。那里的变化需要重大的重新架构,而不仅仅是:
一般来说,如果更改是简单的Apple在类中处理它们而不更改API。换句话说,问题不在于是否可以在SnowLeopard中使用更简单的线程管理代码,而是为什么在需要为Leopard执行硬版本时应该这样做。一个额外的代码路径是一个额外的代码路径,并且直到您可以在雪豹上使用显著不同的API(即使它们比雪豹的API更容易使用)放弃对雪豹的支持,这只是额外的工作。 我会考虑你是否真的想瞄准豹。雪豹的采用一直是公平的,雪豹是一个便宜的升级,而且由于API的变化,将有很多来自小开发者做雪豹专用应用程序的用户的前进压力。唯一一批长期待在Leopard上的用户是那些不懂技术的用户(他们不太可能安装很多第三方软件)和那些仍在使用PPC Mac的用户(他们三年来没有购买新的Mac,所以可能不会购买太多软件)。如果这是一个应用程序,你认为将在3-9个月内发货,我会争辩说,只去雪豹可能是一个合理的选择,并将大大减少你的开发和测试负担。 |
2
2
一种方法是了解在雪豹中,哪些API被修改为使用GCD。例如,Leopard中的nsOperation和nsOperationQueue一直工作。然而,在雪豹身上,它们已经被重写以利用下面的GCD。VoRE为您的10.6用户进行即时升级。 另一种选择是使用 PLBlocks 并自己将gcd编译成代码。我不知道这样行不行,但也许值得一试。=) |
Noah H · 如何通过终端或Swift禁用三指轻拍手势? 6 年前 |
Dmitry Serov · 货币数字格式-数字为整数时省略分数部分 6 年前 |
Duny · ObjC日期始终返回2017年12月25日 6 年前 |
Jan Kaiser · NSButton不调用其操作 6 年前 |