objective-c - 捕获 Objective C 类

标签 objective-c ios nsobject

我正在 try catch /覆盖在我无权访问的对象中调用的某些方法。我希望能够子类化在系统对象中实例化的对象。

例如,当我实例化一个 UIWebView 时,它在内部实例化了一个 UIScrollView。我希望能够对 UIScrollView 进行子类化,这样我就可以通过对其进行子类化来修改其行为的某些方面。这可能吗?

我一直在尝试通过使用一个类别 @implementation UIScrollView (MyScrollView) 来做到这一点,然后覆盖 + alloc,并返回我自己的对象,它是 UIScrollView 的一个子类。但是,我遇到了一些问题。基本上,我似乎无法达到原来的 [UIScrollView alloc] 方法。也许我可以实现自己的 + alloc 方法来复制 [NSObject alloc] 行为?

有没有更简单的方法来做到这一点?我目前的做法有什么问题?

最后,这样做会通过 Apple 的审核流程吗?我不会调用任何未记录的内容。

最佳答案

类别的问题是,它们不允许适当的覆盖,因为您将无法再访问原始方法。

要实现这样的(请原谅我的法语)肮脏 技巧,您可以尝试 MethodSwizzling .作为最后的手段,这有时很有值(value)。我过去主要将它用于调试,也用于逆向工程。

对于您关于 Apple 审批流程的问题,我猜想您在以如此激进的方式更改 UIWebView 的默认实现时遇到麻烦的可能性非常高。

关于objective-c - 捕获 Objective C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035021/

相关文章:

ios - 是否应该为 Swift 类添加前缀以避免潜在的 Objective-C 兼容性冲突问题

ios - 创建IOS 3D效果

ios - 覆盖 prepareForSegue 不起作用

iOS:具有外部参数的对象类中的 setter

ios - NSLog 未在 block 内调用

iphone - UITextView 更改源文本

ios - 如何使用 Alamofire 发布复合关键数据参数?

swift - Swift 中的 NSObject 子类 : hash vs hashValue, isEqual vs ==

ios - 如果找不到结果,对象过滤器会崩溃

iphone - 如何检测点击时取消 UISearchDisplayController 的确切事件