我在App Store上被拒絕在我的應用中使用私有實例變量。我所使用的ivars絕對不是在我的代碼中訪問的,但我使用了來自第三方的一個或兩個靜態庫。我如何測試這些實際上可能是罪犯?檢測私有API的使用
更新:
蘋果指責我(和第三方庫)在UITouch類使用私有的實例變量,包括
- _locationInWindow
- _tapCount
- _previousLocationInWindow
- _timestamp
- 個_touchFlags
- _phase
- _window
我在App Store上被拒絕在我的應用中使用私有實例變量。我所使用的ivars絕對不是在我的代碼中訪問的,但我使用了來自第三方的一個或兩個靜態庫。我如何測試這些實際上可能是罪犯?檢測私有API的使用
更新:
蘋果指責我(和第三方庫)在UITouch類使用私有的實例變量,包括
我對檢測問題一無所知,但最近我們遇到了這個問題;在我們的案例中,它是由Three20圖書館引起的。如果您正在使用它,請參閱http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/2375e7a158ee9d1b以獲得討論/可能的解決方案。
我的確在使用Three20,看起來像這樣可以解決我的問題。謝謝一堆 – nduplessis 2009-11-16 11:25:45
我使用一個或兩個靜態庫 第三方
聯繫第三方請求的解釋,他們寫的代碼,他們必須知道那裏有什麼。他們可能有論壇或評論部分,其他用戶可能已經表達了這些擔憂,您可以查找答案和備選方案。
我已經做了,供應商否認使用私有API,我還沒有發現任何類似的投訴,但我會仍然想知道確切的 – nduplessis 2009-11-16 08:45:21
您可以使用nm
來掃描哪個庫使用有問題的ivar
。
% nm static_lib.a | grep name_of_ivar
如果你得到一條線,我想以一個大寫U
,隨着ivar
你可能有一個犯罪嫌疑人的名字。
正是我正在尋找的東西,會給它一個bash。謝謝 – nduplessis 2009-11-16 08:52:56
好,所以我運行了nm -a static_lib.a,它看起來不像是顯示任何對UIKit類的消息調用,它只顯示如下所示:U .objc_class_name_NSCharacterSet – nduplessis 2009-11-16 09:17:04
我閱讀了您的更新。這些變量可以以直接結構的方式訪問,這使得它們成爲編譯器已知的偏移量...所以我認爲你應該關注哪些部分使用UITouch的東西。即,誰使用/定義touchesBegin:/ touchesMove:/ touchesEnd: – epatel 2009-11-16 09:47:46
對於那些誰擁有衆多的第三方庫,可以檢查您的項目以這樣的方式在你的項目路徑,例如,如果你想找到GraphicsService
:
$ find . |grep "\\.a" | xargs grep GraphicsService
如何通過替換第三方庫沒有犯罪存根並測試它是否失敗? – 2009-11-16 07:29:30
我不想經過兩個審查週期,如果我可以在一個 – nduplessis 2009-11-16 07:33:46