我应该使用 CGMutablePath 还是 NSBezierPath?
Should I use CGMutablePath or NSBezierPath?
我已经开始在我的应用程序中添加图表。最初我使用 CGMutablePath() 完成了此操作,但随后将其重构为我们 NSBezierPath()。我发现我应该使用哪个令人困惑,但考虑到 NSBezierPath() 中的 "NS" 我想知道这是否是旧方法,我应该使用 CGMutable 路径。
有人可以告诉我应该使用其中一种吗?如果是,那么您如何决定使用哪个?对于我正在做的事情,NSBezierPath 生成了更简单的代码。
我正在使用 SWIFT 4 和 XCode 9
谢谢
史蒂文
CG代表核心图形,是C风格的图形API。作为 C,它不是面向对象的,并且需要你为图形上下文或 CGPath 之类的东西传递指针,尽管在 Swift3 中这会被一些语法糖掩盖,因为编译器现在为你做这件事并使 api 看起来是面向对象的,尽管它不是(查看任何 CG 函数的 objective c 与 swift 文档,您可以清楚地看到差异)。 NS 函数是 CG 函数的面向对象 objective C 包装器。你在许多苹果 API 中看到这一点,例如 CFString(C 版本)和 NSString(objective C 版本)。我相信 Apple 的建议是使用最高级别 API 除非你有一些理由不这样做,尽管人们通常会忽略这条规则。例如,我几乎总是看到人们使用 GCD 而不是 NSOperationQueue 来访问主线程。使用任何你喜欢的API;它在 swift 中并不像在 Objective C、C 或 C++ 中那么重要。
我已经开始在我的应用程序中添加图表。最初我使用 CGMutablePath() 完成了此操作,但随后将其重构为我们 NSBezierPath()。我发现我应该使用哪个令人困惑,但考虑到 NSBezierPath() 中的 "NS" 我想知道这是否是旧方法,我应该使用 CGMutable 路径。
有人可以告诉我应该使用其中一种吗?如果是,那么您如何决定使用哪个?对于我正在做的事情,NSBezierPath 生成了更简单的代码。
我正在使用 SWIFT 4 和 XCode 9
谢谢 史蒂文
CG代表核心图形,是C风格的图形API。作为 C,它不是面向对象的,并且需要你为图形上下文或 CGPath 之类的东西传递指针,尽管在 Swift3 中这会被一些语法糖掩盖,因为编译器现在为你做这件事并使 api 看起来是面向对象的,尽管它不是(查看任何 CG 函数的 objective c 与 swift 文档,您可以清楚地看到差异)。 NS 函数是 CG 函数的面向对象 objective C 包装器。你在许多苹果 API 中看到这一点,例如 CFString(C 版本)和 NSString(objective C 版本)。我相信 Apple 的建议是使用最高级别 API 除非你有一些理由不这样做,尽管人们通常会忽略这条规则。例如,我几乎总是看到人们使用 GCD 而不是 NSOperationQueue 来访问主线程。使用任何你喜欢的API;它在 swift 中并不像在 Objective C、C 或 C++ 中那么重要。