Re: Dealing with an @available warning
Re: Dealing with an @available warning
- Subject: Re: Dealing with an @available warning
- From: Saagar Jha <email@hidden>
- Date: Tue, 23 Oct 2018 17:36:00 -0700
Saagar Jha
> On Oct 23, 2018, at 17:15, James Walker <email@hidden> wrote:
>
> On 10/23/18 3:12 PM, Saagar Jha wrote:
>> What build command are you using? I’m not seeing any warnings with this
>> code, compiled with clang -x objective-c -framework AppKit
>> -Wunguarded-availability -mmacosx-version-min=10.9 - :
>
> If you compile with a deployment version of 10.9, I don't know if it even
> bothers to look at the else clause. Try -mmacosx-version-min=10.8.
Oops, that was a typo. I meant -mmacosx-version-min=10.8. Either way,
@available is checked at runtime, so both cases must be compiled anyways.
>>
>> #import <AppKit/AppKit.h>
>>
>> int main() {
>> NSPrintInfo *info;
>> if (@available(macOS 10.9, *)) {
>> info.orientation = NSPaperOrientationPortrait;
>> } else {
>> info.orientation = NSPortraitOrientation;
>> }
>> }
>>
>> Regardless, if you really need a fix, you should be able to cast through
>> NSInteger, instead of NSPrintingOperation, as a fallback.
>
> I'm not sure what you mean by "cast through NSInteger", but if I say
>
> info.orientation = (NSInteger) NSPortraitOrientation;
>
> then there's an error, "assigning to NSPaperOrientation from incompatible
> type NSInteger (aka long)”.
I’m not seeing that error at all, even with -Wall -Wextra. What flags are you
using?
>
>>
>> Saagar Jha
>>
>>> On Oct 23, 2018, at 15:01, James Walker <email@hidden
>>> <mailto:email@hidden>> 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?
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden