Как вставить пользовательский метод при вызове системного метода?
Я перевожу проект Objective-C в Swift.
Я хочу выполнить пользовательский метод, когда системный метод вызывает.
Код в Objective-C: он использовал метод C-Type, метод Swizzling. выполнить пользовательский метод и продолжить запуск системного метода:
void dzn_original_implementation(id self, SEL _cmd)
{
// Fetch original implementation from lookup table
Class baseClass = dzn_baseClassToSwizzleForTarget(self);
NSString *key = dzn_implementationKey(baseClass, _cmd);
NSDictionary *swizzleInfo = [_impLookupTable objectForKey:key];
NSValue *impValue = [swizzleInfo valueForKey:DZNSwizzleInfoPointerKey];
IMP impPointer = [impValue pointerValue];
// We then inject the additional implementation for reloading the empty
// dataset
// Doing it before calling the original implementation does update the
// 'isEmptyDataSetVisible' flag on time.
[self dzn_reloadEmptyDataSet];
// If found, call original implementation
if (impPointer) {
((void(*)(id,SEL))impPointer)(self,_cmd);
}
}
Что мне делать в Swift? Как выполнить метод из формы IMP?
И эта функция подготовлена не только для reloadData(), но и для endUpdate()!