從我這裏的問題:Without subclassing a UIView or UIViewController: possible to catch if a subview was added?如何將「method_getImplementation」和「method_setImplementation」移植到MonoTouch?
我想知道如何將代碼從答案移植到MonoTouch。它基本上用一個新方法替換一個方法,然後調用沒有繼承的舊方法。是否有可能讓這個指針在MonoTouch中工作?
//Makes views announce their change of superviews
Method method = class_getInstanceMethod([UIView class], @selector(willMoveToSuperview:));
IMP originalImp = method_getImplementation(method);
void (^block)(id, UIView*) = ^(id _self, UIView* superview) {
[_self willChangeValueForKey:@"superview"];
originalImp(_self, @selector(willMoveToSuperview:), superview);
[_self didChangeValueForKey:@"superview"];
};
IMP newImp = imp_implementationWithBlock((__bridge void*)block);
method_setImplementation(method, newImp);
我也很好奇它是如何做到的。現在我只是連接一個ObjC庫來完成它。 –