我有一个实现协议的 CLLocationManager 单例,因此我可以告诉另一个模型类 (ServerConnection) 已找到用户的更新位置。
在我的 AppDelegate 方法中,didFinishLaunching,我写
ServerConnection* serverConnection = [[ServerConnection alloc] init];
[LocationManager sharedLocationSingleton].delegate = serverConnection;
[[LocationManager sharedLocationSingleton] getUsersLocation];
这不起作用,并且没有调用我的 ServerConnection 类中的委托方法。但是,如果我尝试让我的 AppDelegate 类成为侦听器,如下行所示,它可以正常工作。
// self refers to AppDelegate
[LocationManager sharedLocationSingleton].delegate = self;
在这里,我的 AppDelegate 实现了所需的委托方法,并且当用户的位置更新时调用该方法,这是应该的。
为什么我的上述方法失败,我尝试将委托设置为 serverConnection?
在线教程通常指向使用 UIViewController 或 AppDelegate 作为“监听器”,但在我的情况下,我想要一个单独的模型类作为监听器。我怎么做?
下面是我的带有协议的 LocationManager 单例类
@class LocationManager;
@protocol LocationManagerDelegate <NSObject>
@required
-(void)LocationManagerUpdated:(LocationManager*) locationManager
withValue:(CLLocation*) location;
@end
@interface LocationManager : NSObject <CLLocationManagerDelegate>
@property (strong, nonatomic) CLLocationManager* locationManager;
@property (strong, nonatomic) CLLocation* location;
@property (weak, nonatomic) id <LocationManagerDelegate> delegate;
+(LocationManager*)sharedLocationSingleton;
-(void) getUsersLocation;
@end
我的服务器连接头文件是。
#import <Foundation/Foundation.h>
#import "LocationManager.h"
@interface ServerConnection : NSObject <LocationManagerDelegate>
@end
这在 AppDelegate 设置为侦听器时有效,但不是我的模型对象 ServerConnection。我该如何解决?
谢谢!