修改内置框架ios

时间:2012-10-31 23:25:21

标签: ios frameworks

我是一名开发iOS机器人应用程序的开发人员。我不打算将此应用程序提交到应用程序商店,也不希望建议的方法获得苹果批准....

我正在努力让蓝牙工作,我认为一个好的起点是尝试修改现有的苹果框架。我是否可以修改框架,以便在我的iOS设备上构建时,框架将针对应用程序进行修改(但不会针对同一设备上的其他应用程序进行修改)?

2 个答案:

答案 0 :(得分:6)

事实上,你可以!

Objective-C允许您“混合”方法来覆盖其默认行为,但如果您愿意,仍然可以调用原始实现。您可以根据需要多次为任意数量的Objective-C方法执行此操作。

如果您希望覆盖C函数中存在的行为,则需要对平台进行更多控制。 Jailbreaking允许你使用Jay Freeman的CydiaSubstrate的全部功能来挂钩或调配Objective-C方法和C / C ++函数。

虽然我不建议使用MethodSwizzle本身,但以下网址对调配http://cocoadev.com/wiki/MethodSwizzling进行了很好的讨论。

但您应该使用CydiaSubstrate's MSHookMes​​sageEx和MSHookFunction。特别是因为你没有向App Store提交任何东西。

现在关于蓝牙,我已经在这个领域做了大量工作(我开发了Celeste,这是一个系统范围的调整,为iOS上的系统应用程序提供了香草蓝牙OBEX支持)。我建议您考虑使用类似BTstack的东西,它可以让您访问从HCI到RFCOMM级别的蓝牙模块,并支持您可能需要的SDP和配对等内容。它还有一个额外的好处,就是不要求方法调整,有些人似乎认为这是一种应该不惜一切代价避免的某种撒旦仪式。

答案 1 :(得分:2)

除了categories(扩展这些框架中提供的基类的功能)之外,我不相信你可以“修改”现有的Apple框架本身。更好的做法可能是简单地创建自己的框架(或找到其他人的开源,商业或简单的第三方框架),然后将该框架构建到您要安装到要使用的iOS设备上的应用程序中。 / p>