How-to find out what causes a didHideZoomSlider error on IOS 8?

后端 未结 3 902
一向
一向 2020-12-14 08:46

The following error keeps coming up in my app\'s crashlytics logs

on IOS 8:

libobjc.A.dylib objc_msgSend + 5 didHideZoomSlider:

Crashed: com.apple.m         


        
3条回答
  •  太阳男子
    2020-12-14 09:33

    I didn't have much luck with adding the delay. Crashes still occurred in my case (iOS 8 and 9.0.1).

    There's an OpenRadar that suggests removing the delegate of the CAMZoomSlider likely responsible for the crash, and this worked well for me.

    User beware, though, as this manipulates a private class and may result in an App Store submission rejection...

    To fix issue with delegate, subclass UIImagePickerController and add the following:

    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [self clearZoomSliderDelegateForClass:[self sliderClass] subviews:self.view.subviews];
    }
    
    - (void)clearZoomSliderDelegateForClass:(Class)sliderClass subviews:(NSArray *)subviews {
        for (UIView *subview in subviews) {
            if ([subview isKindOfClass:sliderClass] && [subview respondsToSelector:@selector(setDelegate:)]) {
                [subview performSelector:@selector(setDelegate:) withObject:nil];
                return;
            }
            else {
                [self clearZoomSliderDelegateForClass:sliderClass subviews:subview.subviews];
            }
        }
    }
    
    - (Class)sliderClass {
        for (NSString* prefix in @[@"CAM", @"CMK"]) {
            Class zoomClass = NSClassFromString([prefix stringByAppendingString:@"ZoomSlider"]);
            if (zoomClass != Nil) {
                return zoomClass;
            }
        }
        return Nil;
    }
    

    In iOS 9 SDK private CameraKit framework prefix changed from CAM to CMK (just check slider with visual debugger), so previous workaround had to be updated.

    This crash may also look like this in logs:

    0   libobjc.A.dylib                      0x3591fae6 objc_msgSend + 6
    1   Foundation                           0x24d28e59 __NSFireDelayedPerform + 466
    ...
    

提交回复
热议问题