KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have this strange crash relating to ARC auto-inserting objc_retains in my code. I have the following two classes: @interface MenuItem : NSObject @property (weak, nonatomic) id target; @property (unsafe_unretained, nonatomic) SEL action; @property (strong, nonatomic) id object; - (instancetype)initWIthTarget:(id)target action:(SEL)action withObject:(id)object; - (void)performAction; @end @implementation MenuItem - (void)performAction { if (self.target && self.action) { if (self.object) { [self.target performSelector:self.action withObject:self.object]; } else { [self.target performSelector:self.action]; } } } @end @interface Widget : NSObject - (void)someMethod:(id)sender; @end At some point I instantiate a MenuItem as such: MenuItem *item = [MenuItem alloc] initWithTarget:widget action:@selector(someMethod:) object:nil]; Then elsewhere I invoke performAction on the menu item: [item performAction]; In the implementation of someMethod I get a crash: @implementation Widget - (void)someMethod:(id)sender { // EXEC_BAD_ACCESS crash in objc_retain } @end Why is this happening?
Tags (comma-separated)
Save Edits
Cancel