On 10 May 2011, at 3:34 AM, Brian Bruinewoud wrote: > Just curious, why does this work (compiles and runs): > > displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget: > tapped selector:@selector(respond:)]; > > But this doesn't link because the CADisplayLink class is missing: > > displayLink = [CADisplayLink displayLinkWithTarget: tapped > selector:@selector(respond:)];
Because the second one causes the linker to find the class in the frameworks you're actually linking against, but the first one searches the process at runtime for a class by that name. Unless you're prepared for NSClassFromString() to return Nil, you should use the second form (and supply the appropriate framework to the linker so that it can resolve the class reference to the specific class in that framework). The first form works because something else in the process happens to have loaded something that refers to CADisplayLink, but there's no guarantee that that will be true. _______________________________________________ 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