我正在开发iPhone调整,首选项我创建了一个PreferenceBundle
,在捆绑中我需要调用一个SpringBoard方法,但结果总是没有。有没有办法可以调用SBApplication
方法?
我正在使用objc_getClass来获取类
SBApplication *app =[[objc_getClass("SBApplicationController") sharedInstance] applicationWithDisplayIdentifier:identifier];
当我用它来调用方法时,结果为null。
是可能的,还是我可以做的一些黑客攻击。我需要从SBApplication
获取iconpath。
答案 0 :(得分:0)
我认为使用C SpringBoadServices函数可能更容易。转到Xcode根文件夹,找到iOS模拟器平台的私有框架SpringBoardServices
。将其设置为当前目录并在可执行文件上运行nm
。
imac-van-ief2:SpringBoardServices.framework ief2$ pwd
/Applications/Xcode 3.2.6/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/System/Library/PrivateFrameworks/SpringBoardServices.framework
imac-van-ief2:SpringBoardServices.framework ief2$ nm -g SpringBoardServices | grep SBSCopyIcon
00009548 T _SBSCopyIconImagePNGDataForDisplayIdentifier
00009400 T _SBSCopyIconImagePathForDisplayIdentifier
现在您已找到图标路径功能名称,您可以调用它。将其声明为extern
,您就可以这样做。
extern NSString *SBSCopyIconImagePathForDisplayIdentifier(NSString *);
myPath = SBSCopyIconImagePathForDisplayIdentifier(@"com.apple.String");
// Do anything you like
[myPath release];
现在,不要忘记将最终的可执行文件链接到SpringBoardServices
框架,并将/System/Library/PrivateFrameworks
添加到框架搜索路径中。