What I am doing here is scanning all loaded classes for subclasses of a certain 
class. Before any NSObject method can be issued I have to check if it is 
actually NSObject or NSProxy derivative instead of an Object derivative that 
does not support NSObject methods. This calls for runtime equivalent for one of 
the following NSObject methods:

- [NSObject respondsToSelector:(SEL)aSelector] = 
class_respondsToSelector(Class, SEL) // this crashed.
+ [NSObject conformsToProtocol:(Protocol *)aProtocol] = 
class_conformsToProtocol(Class, Protocol *) // check for NSObject protocol, 
this does not work.
+ [NSObject isSubclassOfClass:(Class)aClass] // no equivalent, have to 
implement it myself

I ended up creating this:

BOOL class_isSubclassOfClass(Class cls, Class other)
{
    for (Class c = cls; c; c = class_getSuperclass(c))
        if (c == other)
            return YES;
    return NO;
}

If i remembered it right GNUstep runtime have this function. I will file a bug 
report to Apple and ask them to add this, as it is useful in class scanning and 
i am using this technique heavily in jailbreak detection.

> On Dec 14, 2014, at 01:20, Kyle Sluder <k...@ksluder.com> wrote:
> 
> On Sat, Dec 13, 2014, at 10:19 AM, Phillip Mills wrote:
>> Why do you think the problem is with “respondsToSelector:”?  The error
>> says you’re accessing past the end of a string.
> 
> Because the crash happens in a call stack that originates in
> class_respondsToSelector, and involves none of Maxthon's code.
> 
> --Kyle Sluder
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/max%40maxchan.info
> 
> This email sent to m...@maxchan.info

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to