【问题标题】:I am working on the codes to get location of user and get stuck我正在编写代码以获取用户的位置并卡住
【发布时间】:2011-10-13 05:52:55
【问题描述】:

首先请看下面的代码

CoreLocationController.h
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@protocol CoreLocationControllerDelegate     // Line 1
@required                       

- (void)locationUpdate:(CLLocation *)location;
- (void)locationError:(NSError *)error;

@end

/* Declare class named CoreLocationControll and inherited from CLLocationManagerDelegate */
@interface CoreLocationController : NSObject <CLLocationManagerDelegate> {
    CLLocationManager *locMgr;
    id delegate;
}

@property (nonatomic, retain) CLLocationManager *locMgr;            // claim setter and getter for locMgr
@property (nonatomic, assign) id delegate;                          // claim setter and getter for delegate

@end


CoreLcationController.m
#import "CoreLocationController.h"

@implementation CoreLocationController
@synthesize locMgr, delegate;

/* Is triggered by - (void)startUpdatingLocation from CoreLocationDemoViewController.m*/
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"CORE_LOCATION_CONTROLLER=======>DID_UPDATE_TO_LOCATION");
    if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) // line 2
        [self.delegate locationUpdate:newLocation];

}

我的问题是第 1 行和第 2 行做什么以及为什么 我查了 CoreLocationControllerDelegate 但没有参考

【问题讨论】:

  • 不清楚你的问题是什么,能具体点吗?
  • 糟糕,这是我的错...我的问题是 line1 和 line2 的作用以及我们必须使用它的原因...
  • 哦,我没有注意到代码中的第1行和第2行cmets!好的。

标签: iphone objective-c ios core-location


【解决方案1】:

您询问的行是objective-c 协议声明。该代码声明了一个名为 CoreLocationControllerDelegate 的协议。简单来说,协议是一个方法列表,如果给定对象符合协议,则可以期望这些方法实现。

例如,UITextFieldDelegate 协议包含对象应该或必须实现的各种方法,如果它想成为文本字段的委托。

第 1 行@required 表示对象必须实现以下方法以符合协议。如果您声明您的对象符合协议,则它必须实现这些方法,否则您将收到构建错误(或警告,我不记得是哪个)。

第 2 行是一个安全检查,以确保在调用委托方法之前委托符合协议(在这种情况下,它实现了所需的方法)。这可以防止将无法识别的选择器发送到对象的运行时崩溃。

【讨论】:

  • 感谢您的回复。这对我帮助很大。
猜你喜欢
  • 2022-11-14
  • 2021-12-31
  • 2014-12-14
  • 1970-01-01
  • 2013-11-01
  • 2019-09-15
  • 2021-05-23
  • 2016-11-28
  • 2023-03-30
相关资源
最近更新 更多