• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Dealing with an @available warning
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dealing with an @available warning


  • Subject: Re: Dealing with an @available warning
  • From: James Walker <email@hidden>
  • Date: Tue, 23 Oct 2018 17:54:43 -0700

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

  • Follow-Ups:
    • Re: Dealing with an @available warning
      • From: Saagar Jha <email@hidden>
References: 
 >Dealing with an @available warning (From: James Walker <email@hidden>)
 >Re: Dealing with an @available warning (From: Saagar Jha <email@hidden>)
 >Re: Dealing with an @available warning (From: James Walker <email@hidden>)
 >Re: Dealing with an @available warning (From: Saagar Jha <email@hidden>)

  • Prev by Date: Re: Dealing with an @available warning
  • Next by Date: Notarization porcess
  • Previous by thread: Re: Dealing with an @available warning
  • Next by thread: Re: Dealing with an @available warning
  • Index(es):
    • Date
    • Thread