我有一個實現協議的CLLocationManager單例,所以我可以告訴其他模型類(ServerConnection)已找到用戶的更新位置。iOS - 將Model類設置爲另一個Model類的委託
在我的方法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'接口定義? – sergio
編輯過的帖子,謝謝! –