में प्रतिनिधि को कॉल नहीं कर रहा है, मैं किसी अन्य वर्ग में आसानी से फोन के निर्देशांक प्राप्त करने के लिए एक सहायक वर्ग बनाने की कोशिश कर रहा हूं। मैंने एक ट्यूटोरियल का पालन किया है जिसमें UIViewController
ने <CLLocationManagerDelegate>
लागू किया और यह काम किया। मैंने इसे सरल NSObject
में करने की कोशिश की, लेकिन फिर मेरे प्रतिनिधि को अब और नहीं कहा गया था।CLLocationManager NSObject
PSCoordinates * coordinates = [[PSCoordinates alloc] init];
जब फोन करके
PSCoordinates.h
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface PSCoordinates : NSObject <CLLocationManagerDelegate>
@property (nonatomic, retain) CLLocationManager* locationManager;
@end
PSCoordinates.m
#import "PSCoordinates.h"
@implementation PSCoordinates
- (id) init {
self = [super init];
if (self) {
self.locationManager = [[CLLocationManager alloc] init];
if ([CLLocationManager locationServicesEnabled])
{
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = 100.0f;
NSLog(@"PSCoordinates init");
[self.locationManager startUpdatingLocation];
}
}
return self;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"Géolocalisation : %@",[newLocation description]);
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
{
NSLog(@"Géolocalisation (erreur) : %@",[error description]);
}
@end
मैं इसे फोन कर रहा हूँ:
इस कोड को मेरे पास है एक बटन दबाकर Init काम कर रहा है क्योंकि मैं NSLog PSCoordinates init
देख सकता हूं।
मुझे एक ही समस्या वाले लोगों के अन्य विषय मिल गए हैं लेकिन किसी भी उत्तर ने इसे हल नहीं किया है।
आपकी मदद की वास्तव में सराहना की जाएगी।
आप एक मालिक हैं! बहुत बहुत धन्यवाद :) –
धन्यवाद यह वास्तव में मेरी मदद करता है, लेकिन क्या आपको पता है ऐसा क्यों है? –
@ एच। किशन क्योंकि आपके प्रोजेक्ट के लिए एआरसी सक्षम है और आप परिवर्तनीय 'निर्देशांक' को स्थानीय के रूप में घोषित कर रहे हैं। कंपाइलर इस उदाहरण को एक अगली पल में रिलीज संदेश जोड़ देगा जब ऑब्जेक्ट का दायरा खत्म हो जाएगा। तो, आपका उदाहरण पहले ही रिलीज़ हो चुका है और अब अस्तित्व में नहीं है। तो आपका प्रतिनिधि काम नहीं करेगा। जब आप वैरिएबल को वैश्विक के रूप में घोषित करते हैं, तो यह तब तक अस्तित्व में रहेगा जब तक कि उसके मूल वर्ग मौजूद न हों। तो आपके प्रतिनिधि को बुलाया जाएगा। –