NSMutableDictionary with UIButton* as keys - iPhone development

前端 未结 4 1617
栀梦
栀梦 2021-02-20 12:38

I\'m new to iPhone development and I have a question that may have a very simple answer. I am trying to add buttons to a view and these buttons are associated with a custom clas

4条回答
  •  逝去的感伤
    2021-02-20 13:19

    I've got a cool trick for this.

    I cast the pointer to an int (since thats all a pointer really is) and store it in an NSNumber. Using the NSNumber as a key solves this problem and makes sense fundementally because who cares about storing a copy of the button in the dictionary? It makes more sense to me to store a copy of the pointer's info.

    If your like me, you'll probably wrap that bit up into a macro as well. Something like this:

    #define BOX_AS_NUM(_ptr_) [NSNumber numberWithInt:(int)_ptr_]

    Then it's a little cleaner to use in code...

    NSDictionary* btnMap = [NSDictionary dictionaryWithObjectsAndKeys:some_obj, BOX_AS_NUM(some_btn), nil];
    -(IBAction)someBtnAction:(id)sender
    {
        SomeObj* obj = [btnMap objectForKey:BOX_AS_NUM(sender)];
        [obj doCoolStuffBecuaseIWasJustClicked];
    }
    

提交回复
热议问题