Yes, code should obviously be written with this knowledge in mind. The use case I have for it is for macros. I like to use a debugging macro like the following to ensure that methods are getting called (without having to break execution to stop at a breakpoint):
#define LogMethod NSLog(@"-[%@ %...@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd)) This, of course, is only accurate for instance methods (since I'm logging a "-"). I was just wondering if there was a way I could use some sort of introspection to appropriately place a + or a -. I like the ([self class] == self) method, simply because it's shorter, but the [[self class] instancesRespondToSelector:_cmd] is also a great solution. Thanks for the ideas! Dave On Apr 18, 2010, at 6:21 PM, Graham Cox wrote: > > On 19/04/2010, at 10:14 AM, Dave DeLong wrote: > >> If I'm inside a method, is there a way to know at runtime whether that >> method is a class or an instance method? Currently the only way I though of >> to do this is to see if "self" is a Class object or not, but I was wondering >> if there's a more reliable way to determine this. > > > I might be lacking imagination here, but I can't think of any situation where > needing to detect this would make any sense. Methods should be written with > this knowledge built-in to them, since they can either function as class > methods or instance methods but not both. And client code should also know > what it's doing and will call the appropriate method for whatever task it > wants the object to carry out. > > You could ask whether [[self class] instancesRespondToSelector:_cmd] and if > it returns YES it's an instance method. But I'm boggling trying to think of a > legitimate use case. > > --Graham > >
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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com