프로토콜을 구현하는 CLLocationManager 싱글 톤이 있으므로 다른 모델 클래스 (ServerConnection)에 사용자의 업데이트 된 위치를 찾았 음을 알릴 수 있습니다. 방법 내 AppDelegate에에서iOS - Model 클래스를 다른 Model 클래스의 위임으로 설정하십시오.
는 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를 "청취자"로 사용하지만 내 경우에는 별도의 모델 클래스를 청취자로 지정합니다. 어떻게해야합니까?
다음은 프로토콜 서버 연결에 대한 나의 헤더 파일이
@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
내을 locationManager 싱글 톤 클래스입니다. AppDelegate에 리스너로 설정 될 때 작동
#import <Foundation/Foundation.h>
#import "LocationManager.h"
@interface ServerConnection : NSObject <LocationManagerDelegate>
@end
,하지만 내 모델 객체 ServerConnection. 이 문제를 어떻게 해결할 수 있습니까?
감사합니다.
'ServerConnection' 인터페이스 정의가 무엇
LocationManagerUpdated:withValue:
를 호출하려고? – sergio수정 된 게시물, 감사합니다. –