2009-11-16 80 views
10

我在App Store上被拒絕在我的應用中使用私有實例變量。我所使用的ivars絕對不是在我的代碼中訪問的,但我使用了來自第三方的一個或兩個靜態庫。我如何測試這些實際上可能是罪犯?檢測私有API的使用

更新:

蘋果指責我(和第三方庫)在UITouch類使用私有的實例變量,包括

  • _locationInWindow
  • _tapCount
  • _previousLocationInWindow
  • _timestamp
  • 個_touchFlags
  • _phase
  • _window
+0

如何通過替換第三方庫沒有犯罪存根並測試它是否失敗? – 2009-11-16 07:29:30

+1

我不想經過兩個審查週期,如果我可以在一個 – nduplessis 2009-11-16 07:33:46

回答

1

我使用一個或兩個靜態庫 第三方

聯繫第三方請求的解釋,他們寫的代碼,他們必須知道那裏有什麼。他們可能有論壇或評論部分,其他用戶可能已經表達了這些擔憂,您可以查找答案和備選方案。

+0

我已經做了,供應商否認使用私有API,我還沒有發現任何類似的投訴,但我會仍然想知道確切的 – nduplessis 2009-11-16 08:45:21

5

您可以使用nm來掃描哪個庫使用有問題的ivar

% nm static_lib.a | grep name_of_ivar 

如果你得到一條線,我想以一個大寫U,隨着ivar你可能有一個犯罪嫌疑人的名字。

+0

正是我正在尋找的東西,會給它一個bash。謝謝 – nduplessis 2009-11-16 08:52:56

+0

好,所以我運行了nm -a static_lib.a,它看起來不像是顯示任何對UIKit類的消息調用,它只顯示如下所示:U .objc_class_name_NSCharacterSet – nduplessis 2009-11-16 09:17:04

+0

我閱讀了您的更新。這些變量可以以直接結構的方式訪問,這使得它們成爲編譯器已知的偏移量...所以我認爲你應該關注哪些部分使用UITouch的東西。即,誰使用/定義touchesBegin:/ touchesMove:/ touchesEnd: – epatel 2009-11-16 09:47:46

0

對於那些誰擁有衆多的第三方庫,可以檢查您的項目以這樣的方式在你的項目路徑,例如,如果你想找到GraphicsService

$ find . |grep "\\.a" | xargs grep GraphicsService