后在评论中跟大家做一些扩展讨论:
MKOverlayView的手动操作,能功能,如canDrawMapRect
可以因为代码在某处MapKit.framework混淆不易被追溯到他们的调用代码。
取而代之的是,典型的方法是重新阅读他们的文档,直到您对该框架使用该函数的内容有了一个头脑的图像。 (有这样的事,作为反编译的二进制文件,虽然这通常是令人难以接受的,我不建议这样做。)
canDrawMapRect
文档:在MapKit某处:http://developer.apple.com/library/ios/documentation/MapKit/Reference/MKOverlayView_class/Reference/Reference.html#//apple_ref/doc/uid/TP40009715-CH1-SW10
阅读他们的文档后,我推断出这一点。在实际绘制视图之前调用canDrawMapRect
框架。如果您没有在您的子类中覆盖该函数,它将调用超类的默认实现,该实现始终返回YES,然后调用drawMapRect:
(如果您继承MKOverlayView,则必须覆盖它,否则什么也不会绘制!)
您上面链接的类可能返回NO。在这种特殊情况下,它出现在MapKit.framework中的代码跳过调用drawMapRect:
并且没有任何显示(或刷新)。
因此,长话短说:对于这种情况下,你必须发挥代码侦探,并希望文件写得足够清楚,弄清楚,而无法看到所有的代码。
编辑:只是为了进一步澄清 - 它似乎MKOverlayView必须被分类以实际生成可见的东西。
,我到你的基本问题之前,原来的答案 -
简短的回答:这些都是该类中使用私有函数。
长答案:在顶级 实现文件的空名称类别中声明的函数仅对类别为 的类可见。因此,这些功能只能在该类的实现中调用。 (C++等价物只是宣布 函数是私有的)
这4个函数中的3个在同一个.m文件中被调用。没有 挖掘,我猜他们写了第一个功能,然后 后来决定不使用它。
看过整个项目,它们不会从我看到的任何地方被调用,也许值得放入几条日志语句以查看它们是否被调用? 它可能只是它们是为了您的方便而留下的有用功能,但对于项目运行来说并不是必需的。 – MCannon
感谢您的回复。他们的确从项目中被调用,但对于我来说,我无法弄清楚在哪里。 –