我是一名开发人员,正在为iOS开发机器人应用程序。我不打算将此应用程序提交到应用程序商店,也不希望建议的方法获得苹果公司的批准。
我正在尝试让蓝牙正常工作,我认为一个很好的起点是尝试修改现有的苹果框架。我是否可以修改框架,以便当它们构建到我的iOS设备上时,框架将针对应用程序(而不是同一设备上的其他应用程序)进行修改?
发布于 2012-11-01 07:59:51
事实上,你可以的!
Objective-C允许你通过"swizzle“方法来覆盖它们的默认行为,如果你愿意的话,仍然可以调用原始的实现。您可以对任意数量的Objective-C方法执行此操作,次数不限。
如果您希望覆盖C函数中存在的行为,则需要对平台进行更多的控制。越狱允许您使用Jay Freeman的CydiaSubstrate的全部功能来挂钩或搅动Objective-C方法和C/C++函数。
虽然我并不推荐使用MethodSwizzle本身,但是下面的网址很好地讨论了http://cocoadev.com/wiki/MethodSwizzling。
但是你真的应该使用CydiaSubstrate's MSHookMessageEx和MSHookFunction。特别是因为你没有向App Store提交任何东西。
关于蓝牙,我在这个领域做了大量的工作(我开发了Celeste,这是一个系统级的调整,为iOS上的系统应用程序提供普通的蓝牙OBEX支持)。我建议您考虑使用像BTstack这样的工具,它为您提供了从HCI到RFCOMM级别的蓝牙模块访问权限,并支持SDP和配对等您可能需要的东西。
发布于 2012-11-01 07:44:50
除了categories (它扩展了在这些框架中交付的基类的功能),我不相信你可以“修改”现有的苹果框架本身。更好的做法可能是简单地创建自己的框架(或者找到别人的开源、商业或简单的第三方框架),然后将该框架构建到安装到您想要使用的iOS设备上的应用程序中。
https://stackoverflow.com/questions/13168863
复制相似问题