作为初学者,我发现很难理解代表,所以我会尽可能地提出我的问题:
我希望 Connection.m 成为 Controller.h 的代表。在我的 Controller.h 我有
@protocol HeliControllerDelegate <NSObject>
@optional
- (void) measurementUpdated:(NSNumber *) measurement;
- (void) didDiscoverCharacteristic; // neh
@end
@interface HeliController : UIViewController <CBPeripheralDelegate>
@property (nonatomic, assign) id<HeliControllerDelegate> delegate;
@end
并在 Controller.m 中合成:
@synthesize delegate = _delegate;
在接口声明之前。在 Controller.m 我调用 didDiscoverCharacteristic
- (void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{
NSLog(@"Did discover characteristic for service %@", [service.peripheral UUID]);
for(CBCharacteristic *c in [service characteristics]){
if([[c UUID] isEqual:HeliController.throttleCharacteristicUUID]){
NSLog(@"Found throttle characteristic");
self.throttleCharacteristic = c;
[self.delegate didDiscoverCharacteristic];
}
}
}
在委托文件 Connection.h 我开始
@interface Connection : UIViewController <CBCentralManagerDelegate, ControllerDelegate> {
}
这样我就可以使用Controller.h协议中的方法,但是即使程序执行了didDiscoverCharacteristic调用,Connection.m中的方法实现也没有任何反应。
对此的所有帮助都非常感谢。