Beacon Crash in IOS 10
<p>Anyone please help us to fix "Beacon is crashing in IOS10". didRangeBeacons delegate method always returns beacons array as nil and code as follows</p>

<pre><code>   -(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {

    @try {

        CLBeacon *beacon = [[CLBeacon alloc] init];

        NSLog(@"beacons Count %lu", (unsigned long)beacons.count);


    if(beacons != nil &amp;&amp; beacons != Nil &amp;&amp; beacons != NULL &amp;&amp; beacons.count &gt; 0) {

        beacon = [beacons firstObject];

    self.currentMajor = beacon.major;
    self.currentMinor = beacon.minor;

    NSArray *majorMinorIDs = [[NSArray alloc]initWithObjects:self.currentMajor,self.currentMinor, nil];
    self.ComaSeparatedIDS  = [majorMinorIDs componentsJoinedByString:@","];

    /* Log */
    [self printLog:[NSString stringWithFormat:@"Current Major Id: %@, Previous Major Id: %@, Current Minor Id: %@, Previous Minor Id %@", self.currentMajor, self.prevMajor, self.currentMinor, self.prevMinor]];

    // Make a web service request only if new beacon is detected
    if((([self.prevMajor intValue]!=[self.currentMajor intValue]) || ([self.prevMinor intValue]!=[self.currentMinor intValue])) || (self.enteredRegionNow))
    {
        NSLog(@"Making url request when new beacon detected");
        // Delete all the urls before calling the web service
        self.url_immediate = nil;
        self.url_near = nil;
        self.url_far = nil;
        self.url_exit = nil;

        // Make a web service request to the server
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://ibeacon.bpsqr.me/GetUrls/?UUID=%@&amp;MinorID=%@&amp;MajorID=%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"UUID"], self.currentMinor, self.currentMajor]]];
        self.urlsRequestConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

        self.prevMajor = self.currentMajor;
        self.prevMinor = self.currentMinor;

        self.enteredRegionNow = false;


        return;
    }

    // Assigning beacon's current proximity
    self.currentProximity = beacon.proximity;
    [self printLog:[NSString stringWithFormat:@"Current proximity : %d", self.currentProximity]];
    [self printLog:[NSString stringWithFormat:@"Previous proximity : %d", self.prevProximity]];
    [self printLog:[NSString stringWithFormat:@"Last visited webpage proximity : %d", self.previousProximityTag]];

    // Send notification based on the notification enabled flag, proximity and the url found in the response
    if([self.notificationEnabled isEqualToString:@"true"])
    {


        double days =  [self DiffBetweenCurrentAndNotificationDate];
        NSLog(@"Days from notification %f",days);

        NSNumber *notificationDuration =[[NSUserDefaults standardUserDefaults] objectForKey:@"NotificationDuration"];
        NSLog(@"Notification duration from plist %f",[notificationDuration doubleValue]);


        if (days &gt;=[notificationDuration doubleValue] || days == 0 ) {

            NSLog(@"Hit count become zero in differeneceBetweenCurrentAndNotificationDate");

            hitCount = 0 ;
        }

        switch (beacon.proximity) {

            case CLProximityUnknown:
                // Do nothing
                break;

            case CLProximityImmediate:
                if(self.url_immediate != nil)
                {
                        [self sendLocalPushNotification];
                        self.notificationEnabled = false;



                }
                break;

            case CLProximityNear:
                if(self.url_near != nil)
                {
                        [self sendLocalPushNotification];
                        self.notificationEnabled = false;


                }
                break;

            case CLProximityFar:
                if(self.url_far != nil)
                {
                        [self sendLocalPushNotification];
                        self.notificationEnabled = false;


                }
                break;

            default:
                break;
        }

    }

    // Open web page based on proximity when general beacons(not notification beacon) detected
    if([self.status_code isEqualToString:@"200"])
    {
        // Do not open web page while app is in background
        UIApplicationState appState = [[UIApplication sharedApplication] applicationState];
        if((appState != UIApplicationStateBackground) &amp;&amp; (appState != UIApplicationStateInactive))
        {
            if (beacon.proximity == CLProximityUnknown) {
                if(self.currentProximity != self.prevProximity)
                {
                    self.prevProximity = self.currentProximity;
                }

                /* Log */
                [self printLog:@"Unknown proximity"];
            }
            else if (beacon.proximity == CLProximityImmediate) {

                if((self.currentProximity != self.prevProximity) &amp;&amp; (![self.current_url isEqualToString:self.url_immediate]))
                {
                    if(self.currentProximity == self.previousProximityTag)
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(self.flag_immediate == true)
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:1] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                                [self performSelector:@selector(openWebView:) withObject:self.url_immediate afterDelay:20.0];
                            }
                        }
                        else
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:1] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                                [self performSelector:@selector(openWebView:) withObject:self.url_immediate afterDelay:3.0];
                            }
                        }
                    }
                    else
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(navController != NULL)
                        {
                            [self stopTimerTask:self.timer_short];
                            self.timer_short = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:1] repeats:NO];
                        }
                        else
                        {
                            [self performSelector:@selector(openWebView:) withObject:self.url_immediate afterDelay:0.0];
                        }
                    }
                    self.prevProximity = self.currentProximity;
                }
                else if ([self.current_url isEqualToString:self.url_immediate])
                {
                    self.prevProximity = self.currentProximity;
                }
                /* Log */
                [self printLog:@"Immediate"];
            }
            else if (beacon.proximity == CLProximityNear) {

                if((self.currentProximity != self.prevProximity) &amp;&amp; (![self.current_url isEqualToString:self.url_near]))
                {
                    if(self.currentProximity == self.previousProximityTag)
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(self.flag_near == true)
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:2] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                                [self performSelector:@selector(openWebView:) withObject:self.url_near afterDelay:20.0];
                            }
                        }
                        else
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:2] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                                [self performSelector:@selector(openWebView:) withObject:self.url_near afterDelay:3.0];
                            }
                        }
                    }
                    else
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(navController != NULL)
                        {
                            [self stopTimerTask:self.timer_short];
                            self.timer_short = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:2] repeats:NO];
                        }
                        else
                        {
                            [self performSelector:@selector(openWebView:) withObject:self.url_near afterDelay:0.0];
                        }
                    }
                    self.prevProximity = self.currentProximity;
                }
                else if ([self.current_url isEqualToString:self.url_near])
                {
                    self.prevProximity = self.currentProximity;
                }
                /* Log */
                [self printLog:@"Near"];
            }
            else if (beacon.proximity == CLProximityFar) {

                if((self.currentProximity != self.prevProximity) &amp;&amp; (![self.current_url isEqualToString:self.url_far]))
                {
                    if(self.currentProximity == self.previousProximityTag)
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(self.flag_far == true)
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:3] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                             //   [self saveFarBeaconProximityMessage];

                                [self performSelector:@selector(openWebView:) withObject:self.url_far afterDelay:20.0];
                            }
                        }
                        else
                        {
                            if(navController != NULL)
                            {
                                [self stopTimerTask:self.timer_long];
                                self.timer_long = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(x:) userInfo:[NSNumber numberWithInt:3] repeats:NO];
                            }
                            else
                            {
                                [self stopPerformSelectorTask];
                              //  [self saveFarBeaconProximityMessage];

                                [self performSelector:@selector(openWebView:) withObject:self.url_far afterDelay:3.0];
                            }
                        }
                    }
                    else
                    {
                        self.previousProximityTag = self.prevProximity;

                        if(navController != NULL)
                        {
                            [self stopTimerTask:self.timer_short];
                            self.timer_short = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(showAlertOnProximityChange:) userInfo:[NSNumber numberWithInt:3] repeats:NO];
                        }
                        else
                        {
                          //  [self saveFarBeaconProximityMessage];

                            [self performSelector:@selector(openWebView:) withObject:self.url_far afterDelay:0.0];
                        }
                    }
                    self.prevProximity = self.currentProximity;
                }
                else if ([self.current_url isEqualToString:self.url_far])
                {

                    self.prevProximity = self.currentProximity;
                }
                /* Log */
//                  [self saveFarBeaconProximityMessage];

                [self printLog:@"Far"];
            }
        }

    }

} else {
    [self printLog:@"Beacon is nil"];
    return;
}

    }
    @catch (NSException *exception) {
//        &lt;#Handle an exception thrown in the @try block#&gt;
    }
    @finally {
//        &lt;#Code that gets executed whether or not an exception is thrown#&gt;
    }


}
</code></pre>

<p>Bluetooth is enabled in Device, i have tried by changing Deployment target as specified in the following link
<a href="https://stackoverflow.com/questions/39339835/ranging-beacons-in-ios-10">Ranging Beacons in iOS 10</a>. And Array nil conditions checked, entire code was enclosed by try catch in objective c but even though app is crashing by saying "Beacon array is nil". Is IOS10 support Beacon ? Thanks in advance for any help.</p>