मेरे पास मेरे कोड में एआरसी ऑटो-डालने objc_retains से संबंधित यह अजीब क्रैश है।प्रदर्शन से चयन विधि में objc_retain में क्रैश
मैं निम्नलिखित दो वर्गों है:
@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
कुछ बिंदु पर मैं इस तरह के रूप में एक MenuItem का दृष्टांत:
MenuItem *item = [MenuItem alloc] initWithTarget:widget action:@selector(someMethod:) object:nil];
तब कहीं मैं मेनू आइटम पर performAction
आह्वान:
[item performAction];
someMethod
के कार्यान्वयन में मुझे एक क्रैश मिलता है:
@implementation Widget
- (void)someMethod:(id)sender
{
// EXEC_BAD_ACCESS crash in objc_retain
}
@end
ऐसा क्यों हो रहा है?