後在評論中跟大家做一些擴展討論:
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
感謝您的回覆。他們的確從項目中被調用,但對於我來說,我無法弄清楚在哪裏。 –