监视目标 C 中方法的结束



有没有办法在目标C中监视方法以查看何时完成? 这是一种我无法访问的 SDK 方法。

您正在描述面向方面编程 (AOP) 的案例研究,这是面向对象编程的替代和扩展概念。

Objective-C

或底层 C 不提供此功能 — 但是可以通过运行时操作将其部分添加到 Objective-C/Cocoa 中,就像使用方法切换一样。

有几次尝试在github上教授Objective-C AOP,但你必须自己测试它们,我从来没有使用过。

  • https://github.com/moszi/AOP-in-Objective-C
  • https://github.com/tomdalling/AspectObjectiveC
  • https://github.com/ndcube/AOP-for-Objective-C

就个人而言,我在 NSObject 上使用普通方法旋转来记录一次它的 dealloc 调用。它非常方便,因为我只记录它,如果对象是某个子类。


我找到了一篇博客文章,它确切地展示了如何使用NSInvocations来要求做什么:Objective-C中的面向方面的编程

代码

NSMutableArray* testArray = (NSMutableArray *)[[AOPProxy alloc] initWithNewInstanceOfClass:[NSMutableArray class]];
[(AOPProxy*)testArray interceptMethodEndForSelector:@selector(removeObjectAtIndex:)
                              withInterceptorTarget:self
                                interceptorSelector:@selector( removeInterceptor: )];

将在removeObjectAtIndex:结束时调用该方法removeInterceptor:

一般来说,没有。

"监视"某些类型的操作的功能有时会与某些委托协议一起弹出,这些协议可能具有WillFooDidFoo类型的委托回调。

不适用于代码,不。

有一些分析技术可以为您执行此操作,例如 DTrace(可以在 Instruments 中使用),但这对您的代码没有帮助。你可以使用这种方法,但如果你不确定自己在做什么,你真的真的不应该这样做。

听起来答案是否定的。谷歌搜索一下发现:

脱机保存对象

大多数保存函数会立即执行,并在 保存完成。如果您不需要知道保存何时有 完成后,您可以改用保存最终。优点是,如果 用户当前没有网络连接,保存最终 将更新存储在设备上,直到网络连接 重新建立。如果您的应用在连接恢复之前关闭, Parse 将在下次打开应用时重试。

从该文本来看,解析 API 似乎包含此保存方法的变体,这些变体具有回调。

最新更新