On 22 Jan 2013, at 18:07, Keary Suska wrote:


On Jan 22, 2013, at 10:23 AM, Dave wrote:


On 21 Jan 2013, at 18:44, Steve Sisak wrote:

At 6:14 PM +0000 1/21/13, Dave wrote:
if (class_RespondsToSelector(myClass,@selector(initWithManager:) == NO)
        myObj = [[myClass alloc] init];
else
        myObj = [[myClass alloc] initWithManager:sel]];

I get a warning on the initWithManager: statement (Obviously), how to avoid the warning or otherwise fix it?

You could try declaring initWithManager: in a category on the class visible only to your implementation code. (i.e. at the top of your .m file)

The class name is passed in as a string and the class is formed from that, so I can't pre-declare it. Please see my other reply.


If in fact myClass may be any number of classes that may implement certain methods, the "right" way to do this is using a protocol. Protocols are designed to fit this purpose. I don't recall, however, the exact method to hint to the compiler enough to avoid the warning. Importing the protocol header may be sufficient.

This has to work with classes that exist already as well as classes that don't. If initWithManager is defined in the class in question "knows" what it is being called like this, if not then it defaults to the regular NSObject init.

For instance it could be NSString or NSArray that is the class, in which case it won't have "initWithManager" so it calls init instead.

All the Best
Dave


_______________________________________________

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