Objective c initWithFrame的参数1的CorePlot不兼容类型

Objective c initWithFrame的参数1的CorePlot不兼容类型,objective-c,xcode,macos,core-plot,Objective C,Xcode,Macos,Core Plot,我一周前下载了CorePlot,并将其包含在我的一个MAC应用程序项目中。调试过程中一切正常,但当我尝试使用分发版本构建它时,它失败了,错误为“initWithFrame的参数1的类型不兼容” 这就是它发生的地方 pieChart = [[CPXYGraph alloc] initWithFrame:CGRectZero]; 如果这是针对Mac OS X应用程序,则与UIKit不同,应用程序工具包通常从NS*结构中获取几何体。所以,你想要的是NSZeroRect,而不是CGRectZero。另

我一周前下载了CorePlot,并将其包含在我的一个MAC应用程序项目中。调试过程中一切正常,但当我尝试使用分发版本构建它时,它失败了,错误为“initWithFrame的参数1的类型不兼容”

这就是它发生的地方

pieChart = [[CPXYGraph alloc] initWithFrame:CGRectZero];

如果这是针对Mac OS X应用程序,则与UIKit不同,应用程序工具包通常从NS*结构中获取几何体。所以,你想要的是NSZeroRect,而不是CGRectZero。另外,当您生成这些结构时,您需要使用宏
NSMakeRect(x,y,w,h)
,而不是核心图形
CGRectMake(x,y,w,h)
CPXYGraph
是一个
CALayer
,因此
CGRectZero
是正确的。问题是不止一个类具有
-initWithFrame:
方法
+alloc
返回一个
id
,因此编译器不知道选择哪个类,有时会选择错误的类。您可以通过类型转换来解决此问题,如下所示:

pieChart = [(CPXYGraph *)[CPXYGraph alloc] initWithFrame:CGRectZero];

嗨,杰森,谢谢你的回复。我已将其更改为NSZeroRect。现在错误已经从这里消失了,但我得到的这6个错误都是针对不同类别的coreplot。其中一个是ld:warning:in/Users/../Source/build/Debug/CorePlot.framework/CorePlot,文件是为不受支持的文件格式生成的,该文件格式不是链接的体系结构(i386)“.obj_class_name_CPTextLayer”引用自:Hi Eric,感谢您的回复。我在工作。当我完成工作并让你知道时,我会试一试。我刚刚试过Eric,但不幸的是,同样的6个错误仍然存在。ld:警告:在/Users/../Source/build/Debug/CorePlot.framework/CorePlot中,文件是为不受支持的文件格式生成的,而该文件不是要链接的体系结构(i386)。有什么想法吗???检查核心绘图项目构建设置中的构建架构设置。您可能还需要进行干净的构建。