• 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: KVC broken in 10.4.4 on Intel?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: KVC broken in 10.4.4 on Intel?


  • Subject: Re: KVC broken in 10.4.4 on Intel?
  • From: Da Woon Jung <email@hidden>
  • Date: Mon, 30 Jan 2006 16:38:56 +0900

2006/1/30, Scott Ellsworth wrote:
>
> On Jan 29, 2006, at 6:07 PM, Da Woon Jung wrote:
>
> > 2006/1/30, Shawn Erickson wrote:
> >>
> >> On Jan 28, 2006, at 6:30 PM, Da Woon Jung wrote:
> >>
> >>> Hi,
> >>>
> >>> On my PowerBook G4 (PPC), the following works fine:
> >>>
> >>> - (void)setFaintestVisible: (float)aValue
> >>> {
> >>>   NSLog(@"%f", aValue);
> >>> }
> >>>
> >>> //...elsewhere, inside a method...
> >>>
> >>> [self setValue:[NSNumber numberWithFloat: 7.9f]
> >>> forKey:@"faintestVisible"];
> >>>
> >>> // Prints 7.900000
> >>
> >> In the above why not just do...
> >>
> >> [self setFaintestVisible:7.9f];
> >>
> >> If someone is using KVO they will still get notified of the change if
> >> you use your accessor directly.
> >
> > That would defeat the purpose somewhat of using KVC.
>
> Not for the example you showed us.  Your accessor only takes a float,
> not an NSNumber, and NSNumbers do not autoconvert to floats.  (If I
> am wrong about that, I would love a doc pointer, but ISTR that there
> is no reason for the above to work when sent an NSNumber*.  The
> calling conventions on Intel are different than on PPC, which brings
> out the above behavior.
>
> I suspect that
>
> >>> [self setValue:[[NSNumber numberWithFloat: 7.9f] floatValue]
> >>> forKey:@"faintestVisible"];
>
> would get the results you expect, as that is the accessor you are

I didn't know that you could call setValue:(id)aValue forKey:(NSString
*)aKey with a bare scalar value for aValue (which your above line of
code seems to achieve). According to the original Apple doc I quoted
(http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/DataTypes.html#//apple_ref/doc/uid/20002171),
it seems to make it fairly clear that I have to pass an id (NSObject
or any derived type, like NSNumber) and then "the [scalar] value is
extracted from the passed object using the appropriate -<type>Value
method".


> Also, why _not_ use setValue:forKey:?  Do you have any _set<key>
> setters in your code?

No, I'm using takeValue:forKey because I'm still targeting 10.2 for
ppc. An #ifdef would allow me to use setValue:forKey: for Intel
compiles, but would using setValue:forKey: make a difference? I'm
still looking for any documentation that says it would.

Cheers,
DW
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: KVC broken in 10.4.4 on Intel?
      • From: Jim Correia <email@hidden>
    • Re: KVC broken in 10.4.4 on Intel?
      • From: mmalcolm crawford <email@hidden>
References: 
 >KVC broken in 10.4.4 on Intel? (From: Da Woon Jung <email@hidden>)
 >Re: KVC broken in 10.4.4 on Intel? (From: Shawn Erickson <email@hidden>)
 >Re: KVC broken in 10.4.4 on Intel? (From: Da Woon Jung <email@hidden>)
 >Re: KVC broken in 10.4.4 on Intel? (From: Scott Ellsworth <email@hidden>)

  • Prev by Date: Menu items disabled - Loading a ui framework from cocoa app
  • Next by Date: To thread or not to thread?
  • Previous by thread: Re: KVC broken in 10.4.4 on Intel?
  • Next by thread: Re: KVC broken in 10.4.4 on Intel?
  • Index(es):
    • Date
    • Thread