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