让我们跳过关于使用私有API的讨论,它只是用于测试某些东西。
我正在寻找一种方法来使用MPMediaItem
来访问value(forProperty:)
的隐藏字段,但我正在寻找的字符串不公开。我查看了MPMediaItem
标题here但我找不到我要找的内容但是这并不让我感到惊讶,因为在查看MPMediaPlaylist.h时我也找不到任何关于parentPersistentID
isFolder
”或“value(forProperty: "isFolder") as Bool
”属性
通常您会通过value(forProperty: MPMediaPlaylistPropertyName)
之类的内容访问播放列表的名称或其他字段,因为MPMediaPlaylistPropertyName
是公开的,MPMediaPlaylistPropertyIsFolder
不是,所以我们必须使用“isFolder
”
是否有可能找到那些隐藏的字符串?我想知道在猜测名称时是否是运气问题,或者有一个包含这些字符串的标题
以下是可公开发布的字符串
答案 0 :(得分:0)
我认为你真的需要在这一点上重新思考你的应用程序。 我认为一个人永远不应该使用私有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]);
}