【问题标题】:Is 'NSIntersectsRect' from a non-public API? If so, are there alternatives?'NSIntersectsRect' 是否来自非公共 API?如果是这样,是否有替代方案?
【发布时间】:2012-02-22 22:03:08
【问题描述】:

我正在将上述类用于我尝试提交到应用商店的应用。它给了我错误“应用程序引用了 Payload/应用程序名称.app/应用程序名称中的非公共符号:NSIntersectsRect”。如果这是非公开的,是否有人知道可以提供相同功能的类(即检测一个矩形何时与另一个重叠),还是我必须想出一个自定义的解决方法?

【问题讨论】:

  • 根据苹果文档是公开的,我也没有在网上找到任何关于此类问题的参考资料。也许它抱怨您调用 NSIntersectsRect 的其他方法?此外,您可以自己实现它,也可以尝试使用 NSIntersectionRect 将其包装起来并检查返回的 rect。
  • 错误信息具体指向NSIntersectsRect。您能否在答案中详细说明您对 NSIntersectionRect 的建议?
  • NSInteresctsRect 是公开的。这很可能意味着拒绝原因有误,或者 App Review 出错了。在您询问拒绝之前不要花时间在替代品上 - 错误发生了 - 或者您可能会发现它被浪费了,因为拒绝的真正原因又回来了......
  • 我会将它发送给 Apple,但解决方法不会太难。这个项目我遇到了很多障碍。在这一点上,我只想看到它被提交。
  • 这里的文档中提到了它(虽然它只是 OS X 文档,所以也许他们认为这不应该在 iOS 中公开?):developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…

标签: objective-c xcode api public


【解决方案1】:

听起来像是个错误……无论如何 - CGRectIntersectsRect 怎么样?

【讨论】:

  • 试过了。提出错误信息:Undefined symbols for architecture armv7: "_CGIntersectsRect", referenced from: -[*AppName*ViewController fix] in *AppName*ViewController.o ld: symbol(s) not found for architecture armv7
  • @RaysonK 你有一个错字(可能是编译器警告)
  • 错误信息就是这么说的。我直接从错误控制台复制了它。另外,fix 是使用NSIntersectsRect 的方法的名称(或CGIntersectsRect,现在...)
  • @Rayson nonono - 您的源代码中有错字。这是CGRectIntersectsRect 不是CGIntersectsRect
  • O_O 我....你....全能的上帝,就是这样!在我改变它之后,构建通过了。 Jeez laweez,谢谢你的收获!
【解决方案2】:

根据 NSIntersectionRect 的文档

If the two rectangles don’t overlap, the returned rectangle has its origin at (0.0, 0.0) and zero width and height (including situations where the intersection is a point or a line segment)

所以我的建议是创建一个类似的方法

- (BOOL)rect:(NSRect)rect1 intersectsRect:(NSRect)rect2 {
    NSRect testRect = NSIntersectionRect(rect1, rect2);
    return !NSEqualRects(testRect, NSMakeRect(0.0, 0.0, 0.0, 0.0)
}

【讨论】:

  • 好的,这很烦人。你说的有道理,我逐字输入代码,但不知何故 Xcode 不承认 NSRect 作为一种类型。我尝试使用 CGIntersectsRect,但这也无济于事。这是 Xcode 4.2 的常见错误吗?
  • NSRect 是 Mac OS X 类型 — 在 iOS 上,您需要 CG* 版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 2020-11-28
  • 2014-01-29
  • 2020-10-07
  • 2012-09-02
  • 2016-08-06
相关资源
最近更新 更多