ios - Inject custom class into subclass inheritance tree in Objective-C -
I think of myself as an experienced objective-programmer. I approve to be a survivor, and use the facilities of language completely. It involves using runtime, only-in-time changes are different in existing frameworks, like swizzling method and dynamic subclassification, the fact that this language is so versatile that it is equivalent to another object oriented equivalent .
But recently I have been thinking about an old facility, that I still think myself needs to use from time to time, but for some time now it disliked it Has been done. This is a replacement for the old I often find the UIKit classes subclasses in their order to expand them or just slightly alter their behavior. An example that I recently came to was a This is to be done in this way, because you do not have permission to change the pan gesture of a scroll view to the recogniser's representative (this one throws an exception exception), and you Can not create your own custom UIScrollView Now all this worked great out. I changed all the uses of . With the Now was excluded from So my question is really simple how will you approach this? After "text" itemprop = "text"> You want to change the behavior of a class globally to play with the class instead of identifying , The direct approach just needs to change the method you have to replace. Runtime still allows it with class_setSuperClass . UIScrollView subclass, which had created some conditions for pangestarrequiser I did that by classifying UIScrollView and then apply gestureRecognizer: shouldBeRequiredToFailByGestureRecognizer:. panGestureRecognizer UITableView and UICollectionView which I have also used for the whole app, what to do with those people? As you know, both of these sections are inherited from UIScrollView , but there is no my custom sub-class for UIScrollView . That's why I ended up writing the same code several times for every class inherited from UIScrollView (and it was used in the app) . Writing the same code multiple times is not programmer 1-2-3. But I had finished writing a custom subclass for UIScrollView but instead of UITableView and UICollectionView class_setSuperClass you were able to already have a pre-package class super class UITableView like "sly" . You basically just call class_setSuperClass ([UITableView class], [MyScrollView class]), and everything went fine (ok almost) okay. Now you injected your code between UITableView and UIScrollView . So every time you did [[UITableView alloc] init] , there were attributes of MyScrollView because it was inherited directly from it. Class_setSuperClass iOS 2.0! Since we can swing and hacking some of the object's isa pointer. Now it has also been deprecated. class_replaceMethod () . It seems that what you want is the easiest way to complete it.
Comments
Post a Comment