【发布时间】:2012-12-21 12:13:30
【问题描述】:
我有一个实现协议的 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。我该如何解决这个问题?
谢谢!
【问题讨论】:
-
ServerConnection接口定义是什么?
标签: iphone ios xcode model delegates