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: Thu, 25 Oct 2018 16:05:17 -0700
FWIW, I don’t see this in Objective-C++ either.
Saagar Jha
> On Oct 23, 2018, at 17:54, James Walker <email@hidden> wrote:
>
> On 10/23/18 5:36 PM, Saagar Jha wrote:
>> Saagar Jha
>>> On Oct 23, 2018, at 17:15, James Walker <email@hidden
>>> <mailto: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?
>
>
> Hmm, it appears to be because I'm using Objective-C++. When I put that line
> in a .m file, there was no error.
>
>
>>>
>>>>
>>>> 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