On Mon, May 2, 2016, at 11:59 AM, Alex Zavatone wrote:
> That alone should give you pause.
> 
> And I was trying to decipher how their code ended up transferring values
> from my object to a method that appears after a custom constructed alert.
> 
> This alert is simply a few views and a few buttons.  No UIAlertView or
> UIAlertController is used.
> 
> What I found that shocked ad horrified me was that the object that was
> needed was being passed by adding it to the layer of the button by using
> an arbitrary key using KVC setValue: forKey: to an arbitrary key.
> 
> First, I was rather confused since I had created an accessor for this
> value off of a unique key, so this level of strangeness didn't need to be
> done, but secondly I had no idea that this was even possible, or even if
> it was a good idea.
> 
> The code looked something close to this:
> 
>       UIButton *someButton = [UIButton buttonWithType:UIButtonTypeCustom];
>       someButton.tag = 1;
>         [[someButton layer] setValue: someImportantObject
>         forKey:@"someArbitraryKey"];
> 
> And later on, when the button was tapped, they would get the object like
> so:
> 
>         switch ([sender tag]) { // That button 
>             case 1:
>             { 
>                 NSMutableDictionary *someImportantObject = [[sender
>                 layer]valueForKey:@"someArbitraryKey"];
>                 [self doStuffWith: someImportantObject];
>                 break;
>             } 
> 
> 
> I had no idea that using KVC that something as arbitrary as this was even
> possible - let alone if it is a good idea.   
> 
> For it being a good idea, it's obscure as can be, so no.   But does KVC
> allow you to be as arbitrary as that with *any* object (in this case, an
> NSDictionary) to another that originates from an NSObject with NSCoding
> protocols?

No. This is a Core Animation-only extension to Key-Value Coding:
<https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Key-ValueCodingExtensions/Key-ValueCodingExtensions.html>

--Kyle Sluder

> 
> I was looking around to see how the NSKeyValueCoding protocols are
> adopted into NSObject and therein into a UILayer and I couldn't find
> where this happens.  Where does this happen?
> 
> Also, though this can be done, it seems really really really really
> sketchy.  Is it a valid approach - to use KVC to add arbitrary properties
> to any old NSObject or are there unexpected implications to be expected?
> 
> Thanks in advance.  My mind is sufficiently warped enough from 1.
> thinking WHY someone would do this, 2. thinking it would be a good idea
> and 3. adding it as relied upon functionality in a shipping project.  
> 
> The never ending list of surprises in this code give me PTSD.
> 
> Cheers and thanks,
> Alex Zavatone
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (Xcode-users@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to