[英]How can I tell of which type the argument for a private framework method has to be?
我目前正在使用私有框架,主要是出於此目的。 從某種意義上說,我為自己設定了一個目標,即讓鈴聲安裝程序(就像Garage Band能夠安裝鈴聲一樣)在非越獄設備上運行。
因此,我一直在瀏覽類轉儲,發現ToneLibrary.framework和TLToneManager
( 請參閱classdump )看起來很有希望。 在TLToneManager
, -(void)importTone:(id)arg1 metadata:(id)arg2 completionBlock:(/*^block*/ id)arg3
看起來-(void)importTone:(id)arg1 metadata:(id)arg2 completionBlock:(/*^block*/ id)arg3
我的要求。
對於該方法,期望將TLITunesTone對象作為arg1似乎是顯而易見的,因此我創建了一個對象,並使用我的應用程序捆綁包中的m4r文件對其進行了初始化,然后將其傳入。這導致'NSInvalidArgumentException', reason: '-[TLITunesTone writeToFile:atomically:]: unrecognized selector sent to instance 0x15551770'
。 因此,它期望有其他東西-顯然實現了writeToFile:atomically:
東西,也許是NSData或NSDictionary。
在我繼續盲目試驗之前,我想知道-是否有一種方法(試錯法除外)可以找出需要通過私有方法傳遞哪種類型的參數? (我確實意識到,即使我知道類型,例如對於字典,我仍然可能缺少所需內容的知識)
謝謝!!
NSLog
參數類型。 writeToFile:atomically:
,稍后傳遞參數等。 就是這樣 當然,您可以像以前一樣猜測參數類型,但這可能需要更長的時間。 在某些情況下,您不會很幸運地獲得例外。 應用程序只會因分段錯誤而崩潰,這幾乎沒有用。 即使是崩潰日志也可能無法提供很多信息。 對於C函數(例如CoreTelephony API或C ++類),這尤其困難。 許多API期望指向CoreFoundation對象,C結構和一些內部對象的指針。 參數錯誤-分段錯誤。 在這種情況下,只有拆卸才能為您提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.