Le 24 févr. 2010 à 20:36, Steve Christensen a écrit :

> On Feb 24, 2010, at 11:04 AM, Bill Bumgarner wrote:
> 
>> On Feb 23, 2010, at 8:57 PM, Steve Christensen wrote:
>> 
>>>> That code uses blocks, though, which implies that it will be compiled 
>>>> using a later version of Objective-C. Will that code really run on older 
>>>> versions of OS X?
>>> 
>>> The compile-time conditional assumes that you're building against the 10.6 
>>> SDK (or later). Obviously if you're going to support both cases, you'll 
>>> need to use a compiler configuration that is compatible with all the OS 
>>> versions you plan to support.
>> 
>> There are symbols *sometimes* emitted by compilation of blocks that won't be 
>> available on prior releases of Mac OS X and, thus, will cause a dyld error 
>> on launch on those platforms.
>> 
>> Be careful.
> 
> Is this the case even if you're weak-linking against 10.6, i.e., you're 
> setting the deployment target to 10.4? And is this a blocks-specific issue? I 
> don't recall ever having problems with other cases when I wanted to call a 
> newer API method conditional on the OS version.



Unfortunately, the compiler is not smart enough to generate weak symbols, so no 
way to use weak linking here. The only solution is to create an external bundle 
with code using block and load it on Snow Leopard (just like when you want to 
use a new class, as class does not supports weak linking on Mac OS X yet).


-- Jean-Daniel



_______________________________________________

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

Reply via email to