On 10/23/18 5:36 PM, Saagar Jha wrote:

Saagar Jha

On Oct 23, 2018, at 17:15, James Walker <jam...@frameforge3d.com <mailto:jam...@frameforge3d.com>> 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 <jam...@frameforge3d.com <mailto:jam...@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?



_______________________________________________

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