[英]iOS How do I find Strings in Apple's private APIs
讓我們跳過有關使用私有API的討論,這只是為了測試某些東西。
我正在尋找一種通過使用value(forProperty:)
訪問MPMediaItem
的隱藏字段的MPMediaItem
,但是我正在尋找的String並不公開。 我在這里查看了MPMediaItem
標頭,但找不到我想要的東西,但這並不令我感到驚訝,因為在查看MPMediaPlaylist.h時,我也找不到有關“ parentPersistentID
”或“ isFolder
”屬性的任何信息可以通過value(forProperty: "isFolder") as Bool
輕松訪問
通常,您可以通過諸如value(forProperty: MPMediaPlaylistPropertyName)
類的value(forProperty: MPMediaPlaylistPropertyName)
來訪問播放列表的名稱或其他字段,因為MPMediaPlaylistPropertyName
是公開可用的,而MPMediaPlaylistPropertyIsFolder
不是公開的,因此我們必須使用“ isFolder
”
是否有可能找到那些隱藏的字符串? 我想知道猜測名稱時是否碰運氣,或者是否有包含這些字符串的標頭
以下是可公開使用的字符串
我認為您在這一點上確實需要重新考慮您的應用程序。 我認為永遠不要玩私有API,它是出於某種目的而私有的。
但是這個Objective-C代碼可以顯示私有變量:
unsigned int o;
Ivar *d = class_copyIvarList([MPMediaItem class], &o);
for(int i=0;i<o;i++) {
NSLog(@"%@", [NSString stringWithCString:ivar_getName(d[i]) encoding:NSUTF8StringEncoding]);
}
free(d);
您可能還需要這些屬性,有時還有computed
屬性(對不起,此術語很抱歉),這些屬性也可能是私有的,您可能想知道。
您也可以嘗試添加以下內容:
objc_property_t *prop = class_copyPropertyList([something class], &l);
for (int i = 0; i < l; i++) {
NSLog(@"%@", [NSString stringWithCString: property_getName(prop[i]) encoding:NSUTF8StringEncoding]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.