Re: Dealing with an @available warning
site_archiver@lists.apple.com Delivered-To: Cocoa-dev@lists.apple.com
On Oct 23, 2018, at 3:01 PM, James Walker <jamesw@frameforge3d.com> wrote:
I had some code like this
pInfo.orientation = NSPaperOrientationPortrait;
where pInfo is of type NSPrintInfo*. When compiling with -Wunguarded-availability, I got a warning saying that NSPaperOrientationPortrait is only available on macOS 10.9 and later. So I wanted to change it to:
if (@available( macOS 10.9, * )) { pInfo.orientation = NSPaperOrientationPortrait; } else { pInfo.orientation = NSPortraitOrientation }
But then I get an error, "assigning to NSPaperOrientation from incompatible type NSPrintingOrientation". If I fix the error by adding a typecast to NSPaperOrientation, then I get a warning that NSPaperOrientation is only available on 10.9 and later. Is there any way out of this roundabout, other than using a later deployment target?
Dumb answer: use #pragma clang diagnostic to disable the guarded availability check on that line. Something like this: #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunguarded-availability" pInfo.orientation = (NSPaperOrientation)NSPortraitOrientation; #pragma clang diagnostic pop You should file a bug report against AppKit. I'm not sure there is any benefit to marking a plain C enum as unavailable. Use of a new enum would work fine when running on an old OS version. -- Greg Parker gparker@apple.com <mailto:gparker@apple.com> Runtime Wrangler _______________________________________________ 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/site_archiver%40lists.appl... This email sent to site_archiver@lists.apple.com
participants (1)
-
Greg Parker