小编fun*_*oll的帖子

在同一iPhone上运行的应用程序之间透明地进行通信

有许多类似的问题,所以这个问题的重点不是重复.

前提条件

  • 两个iPhone应用程序(单独的软件包ID),您可以完全控制每个应用程序的源代码
  • 用户在同一部手机上安装了这两个应用程序
  • 没有与其他主机的网络连接
  • 没有越狱
  • 假设应用程序具有在后台无限期运行的适当功能

目标

  • 在应用程序之间双向通信
  • 最大限度地减少或消除用户观察到的此类通信正在进行的证据
  • 后台应用程序将具有需要转到前台应用程序的新信息,因此需要推送或轮询机制
  • 理想情况下可以在生产中使用,因此不使用私有API

所以问题是"可以做到吗?"

以下是关于"已经尝试过"的一些注释 - 已经考虑过的不同方法.

很好理解攻击向量

  • 使用其他主机 - 合理但由于延迟而排除在问题定义中
  • 自定义URL方案 - 一种非常好的方法,但由于动画和上下文切换而不理想,尤其是在轮询时
  • 在Settings.app - > Privacy(例如Contacts)下的东西 - 会起作用,但宁可不要求权限

可能不起作用的事情

  • "打开......"api
  • 以某种方式共享文件系统
  • 蓝牙

可能的想法

Apple小心翼翼地避免暴露此功能.有没有人想出办法呢?

network-programming ipc ios

12
推荐指数
1
解决办法
3090
查看次数

Android Studio:创建表现良好的异常断点

我刚刚使用Android Studio制作了一个未经修改的空Android应用.我正在尝试设置一个异常断点.

默认异常断点重复触发.所以我添加!(this instance of java.lang.ClassNotFoundException)了条件,正如这个问题所建议的那样.

但是,我仍然被我的异常打断,这次是一个模态对话框:

断点条件错误截图

如何创建一个异常断点,在异常发生之前保持静默?

编辑澄清:我不想为特定的异常创建一个断点,我想要一个我可以随时留下的一般异常断点.

java debugging android breakpoints intellij-idea

6
推荐指数
1
解决办法
3163
查看次数

从静态库反向工程objective-c接口(如class-dump-z)

我有一个用objective-c编写的静态库.我有一个libFoo.a文件的形式.

我想提取库中包含的类和方法,类似于class-dump-z的输出.

我已otool -tV按照此处的建议尝试使用.

但是,输出非常冗长,除了接口声明之外还包含许多其他内容.

根据H2CO3的评论,我尝试了RuntimeBrowser,这似乎是一个很好的工具.但是,从文件 - >打开打开.a文件似乎没有做任何事情.可能是因为我正在使用Mac版本并试图检查iOS库.

我也尝试对静态库运行class-dump-z,但它似乎不起作用:

/**
 * This header is generated by class-dump-z 0.2a.
 * class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3.
 *
 * Source: (null)
 */
Run Code Online (Sandbox Code Playgroud)

尝试了常规类转储,但收到此错误消息:

错误:Fat文件不包含指定体系结构的有效Mach-O文件(i386).这可能意味着类转储是在静态库上运行的,不支持.

我下载了IDA for Mac的评估版(6.4.1303322),到目前为止它还是最好的.非常有用 - 只需弹出静态库,您就可以看到类的列表,它可以理解Objective-C 2.0语法,您可以看到这些方法.

话虽这么说,我仍然希望看到一种方法来获得与class-dump-z相同格式的输出.

有人知道提取Objective-c静态库中包含的类和方法的方法吗?当我在调试器中停止时,我可以在堆栈中看到它们,当我使用它时[NSThread callStackSymbols],我知道调试符号存在.

reverse-engineering objective-c static-libraries

5
推荐指数
0
解决办法
1975
查看次数

Log Objective-c消息在设备上发送

在模拟器中运行iOS应用程序时,会有一个环境变量NSObjCMessageLoggingEnabled导致所有objc_msgSend调用都记录到文件中.(详细说明).

我试图找出我的应用程序中发送的所有消息,但我无法在模拟器中运行它.它必须在物理设备上,因为我通过闪电连接器与硬件进行交互.出于同样的原因,我无法将调试器附加到进程.

将日志写入磁盘(如使用创建的日志)NSObjCMessageLoggingEnabled,但在我的应用程序的Documents目录中将其写入本地或类似日志会很有帮助.

这可能吗?

iphone objective-c objective-c-runtime ios

5
推荐指数
1
解决办法
856
查看次数

如何检测use_frameworks!在编译时

我正在开发一个cocoapod。使用我的 pod 的人可以选择是否将此行包含在他们的Podfile

use_frameworks!

如果他们包含它,我的代码将被编译到一个.framework文件中。如果没有,就会被编译成.a文件。

我想使用预处理器宏根据是否use_frameworks!存在在我的可可豆荚中包含不同的代码。

例如,这样的事情:

#if PODFILE_CONTAINS_USE_FRAMEWORKS
@import My_Library;
#else
#import <My-Library/MyLibrary.h>
#end
Run Code Online (Sandbox Code Playgroud)

当您的 Pod 名称不合规时,就会出现这种情况c99extidentifier

我已经尝试检查#if defined COCOAPODS,但这两种情况都定义了。

ios-frameworks cocoapods

5
推荐指数
1
解决办法
259
查看次数

本地范围内NSUInteger的默认值是多少?

给出以下代码段:

- (void)doSomething
{
    NSUInteger count;
}
Run Code Online (Sandbox Code Playgroud)

什么算?它保证是0吗?

int objective-c nsinteger

2
推荐指数
1
解决办法
5392
查看次数