作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我尝试使用方法调配来捕获 NSObject 泛型的“alloc”。
NSObject *obj = [[NSObject alloc] init];
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
NSString *str = [[NSString alloc] init];
[...]
这是实现(类别 .m),适用于所有其他方法,NSObjet 上的 alloc 除外。
可能是什么原因?
#import "NSObject+Custom.h"
#import <objc/runtime.h>
@implementation NSObject (Custom)
+ (void)load
{
Method original = class_getInstanceMethod(self, @selector(alloc));
Method swizzle = class_getInstanceMethod(self, @selector(allocCustom));
method_exchangeImplementations(original, swizzle);
}
- (id)allocCustom
{
NSLog(@"%s", __FUNCTION__); // no way
return [self allocCustom];
}
@end
谢谢。
最佳答案
+alloc
是类方法,不是实例方法:
class_getClassMethod
代替 class_getInstanceMethod
+allocCustom
代替 -allocCustom
关于iphone - "alloc"的方法调配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811461/
我调配 NSMutableArray addObject 失败了。代码如下: Method ori_Mehtod = class_getInstanceMethod([self class], @se
我的问题不是关于如何调配,而是这个特定代码片段中发生了什么: private let swizzling: (UIViewController.Type) -> () = { viewControll
我正在 MKMapView 和 UIScrollView 上调配 initWithFrame: 和 dealloc,以添加和删除通知监听器以监视与外部设备的连接,以便我可以为这些 View 连接其他手
我正在使用 AmazonElasticMapReduceAsyncClientBuilder 为实例组设置自动扩展策略。 当我执行 aws emr describe-cluster --cluster
我是一名优秀的程序员,十分优秀!