> > CGFloat is a float, yet it returns 0??????????? WTF? > > It isn’t a float. What you’re seeing in the debugger *confirms* that CGFloat > is 64 bits.
Hmm.. I guess I don't understand that then. My logic was because casting as a double returns the expected value, and casting as a CGFloat does not, that it couldn't be a double... > You’re also confusing the concepts of a cast as a value conversion and a cast > as a re-interpretation of the type of variable (which re-interprets the > underlying memory bits), and that’s what Greg was trying to alert you to: > > >> The debugger console may interpret it > >> differently (using the cast as a hint of the correct return type, > >> rather than a conversion of the real return type). I see... > There’s something else going on here. You might want to show some > code, including the declaration of (say) your “laserXOffset” property, > and the line where you set the scale. The scale code I discovered was breaking due to a protocol's interface being used on a class that defined a different type. So, it went like this: @protocol MenuInteractable <NSObject> -(void)setScale:(CGFloat)scale; // other stuff @end .... Meanwhile a class in the game library: @interface CCNode : NSObject @property(nonatomic,readwrite,assign) float scale; // other stuff @end so I had a class inherit from that: @interface MenuItem : CCNode <MenuInteractable> @end .. and an object using that was doing: id<MenuInteractable> item = menuItem; item.scale = 1.0f; // And then when I'd get into the setter it would be assigning the value 0. Once I changed the MenuInteractable property to: -(void)setScale:(float)scale; Then all my sprites were back.. I didn't even realize float was what the actual real class was using, I assumed it was CGFloat and that's why I put it on that protocol. And like I said, on my iPhone 6 and iPad3, it was totally ok with how that was. ... Sorry for my temper fit. Sometimes I go argghhh when things make no sense, and I am afraid I am going to need to go out and buy an iPhone7 now because I have no idea whether there's something else that's going to behave differently on it compared to all these other devices. Patrick J. Collins http://collinatorstudios.com On Tue, 18 Oct 2016, Quincey Morris wrote: > On Oct 18, 2016, at 00:04 , Patrick J. Collins > <[email protected]> wrote: > > > >> Is your process 64-bit or 32-bit? CGFloat is float in 32-bit processes and > >> double in 64-bit processes. > > > > I'm not sure what you mean? The app is intended to work on both 32-bit > > and 64-bit architectures. My iPad3 is a 32-bit device, and my iPhone-6 > > is a 64-bit device. On both of those devices everything is fine and > > casting 1.0 as either a CGFloat or float with both result in 1.0 (as > > expected). On the iPad pro, this bogus behavior happens where 1.0 cast > > as a CGFloat becomes 0. > > You’re having a little temper fit here, which is fine by me except that it’s > leading you into technical incorrectness, not to mention contradicting > yourself. You said: > > > (lldb) expr (float)[self.fireable laserXOffset] > > (float) $11 = 0 > > (lldb) expr (CGFloat)[self.fireable laserXOffset] > > (CGFloat) $12 = 400 > > > (lldb) expr (double)[self.fireable laserXOffset] > > (double) $15 = 400 > > > That is, according to you, casting *as a float* produces 0, and casting as > CGFloat or double [identical in iPad Pro as in iPhone 6/7] produce the same > non-zero value. Somehow, though, you’ve mixed this up: > > > So, back to your actual problem: > > > Yes, when I first tried my game on the iPad pro, a huge percentage of my > > sprites were invisible, and it was because their scale was being set to > > 1.0 as CGFloats, which was turning into 0. So I had to make sure all > > the places where scale was being set was using an actual float type. > > > > I feel like I should just sed -i my entire > > project and turn all CGFloats into floats... But I am not sure if that's > > really a good idea. > > No, that’s a really terrible idea. Voodoo solutions always are. > > >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Objc-language mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/objc-language/archive%40mail-archive.com This email sent to [email protected]
