On Mar 8, 2012, at 9:17 AM, Mike Abdullah wrote:

> 
> On 8 Mar 2012, at 14:54, Howard Moon wrote:
> 
>> On Mar 8, 2012, at 6:21 AM, Mike Abdullah wrote:
>>>> 
>>>>    I'm really not that familiar with Objective-C and Cocoa yet, but I'm 
>>>> getting a warning for something that works fine, and I hate warnings.  The 
>>>> warning is:
>>>> 
>>>>            'NSOpenPanel' may not respond to '-setDirectoryURL:'
>>>> 
>>>>    I know that setDirectoryURL: is an NSSavePanel message, but NSOpenPanel 
>>>> derives from NSSavePanel, so why does it give me this warning?  As I said, 
>>>> it works fine (i.e., the open panel starts out in the folder I specified). 
>>>>  Is there a case where it WON'T work?  If not, then is there a way to 
>>>> prevent the warning?
>>> 
>>> That method was introduced in 10.6. Are you perhaps building against the 
>>> 10.5 SDK or even earlier?
>>> 
>> 
>> Ah, yes, that's it.  But I do need to support 10.5.  What can I use that 
>> works in 10.5 thru 10.7?
> 
> Options:
> 
> A)
> Bump the SDK setting to 10.6, keeping the deployment target at 10.5. Don't 
> call any 10.6-only methods when running on 10.5. (i.e. check 
> -respondsToSelector: or similar)
> 
> B)
> Declare the new methods as categories in headers, but don't actually 
> implement the methods. That will tell the compiler how to call those new 
> methods. Once again, don't call 10.6-only methods while running on 10.5
> 
> C)
> Fallback to older, deprecated APIs. e.g. -directory
> 


Hmmm... I'm building a VST3/vstgui4 plug-in, and I think the base SDK and 
deployment targets are set as required, like this:

SDKROOT = macosx10.5
SDKROOT[arch=x86_64] = $(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk

When I build either a 32-bit or 64-bit build, while running on 10.6, it 
executes -setDirectoryURL with no problems.  I haven't tried running in 10.5 
yet.

Can I keep my above settings, but do this?

        if ([openPanel respondsToSelector:@selector(setDirectory)])
                [openPanel setDirectory:nsParentPath];
        else
        {
                NSURL*  nsParentURL             = [NSURL 
fileURLWithPath:nsParentPath isDirectory:YES];
                [openPanel setDirectoryURL:nsParentURL];
                //[nsParentURL release]; // No...crashes! must be used by panel
        }


-Howard



_______________________________________________

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