gpt4 book ai didi

iphone - "alloc"的方法调配?

转载 作者:可可西里 更新时间:2023-11-01 03:47:20 24 4
gpt4 key购买 nike

我尝试使用方法调配来捕获 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com