Ios 代理未响应
我尝试在我的应用程序中使用委托和协议调用另一个方法。我需要将变量“myData”发送到另一个视图,但由于某些原因,它无法工作。我不知道我在代理和协议的实现方面做错了什么。委托从不调用协议的操作 对不起,我是新来的 BLEViewController.hIos 代理未响应,ios,objective-c,delegates,protocols,Ios,Objective C,Delegates,Protocols,我尝试在我的应用程序中使用委托和协议调用另一个方法。我需要将变量“myData”发送到另一个视图,但由于某些原因,它无法工作。我不知道我在代理和协议的实现方面做错了什么。委托从不调用协议的操作 对不起,我是新来的 BLEViewController.h #import <UIKit/UIKit.h> #import "BLE.h" @protocol EnviarDatos <NSObject> //Metodo que se manda llamar pero se
#import <UIKit/UIKit.h>
#import "BLE.h"
@protocol EnviarDatos <NSObject>
//Metodo que se manda llamar pero se implementa en otra clase
-(void) actualizaDatos:(NSData*)Data;
@end
@interface BLEViewController : UITableViewController <BLEDelegate>
{
//id <EnviarDatos> delegate;
}
@property (nonatomic,assign)id delegate;
@property (nonatomic, retain) NSData *myData;
+ (BLE*) theBLEObject;
- (void) scanForPeripherals;
- (IBAction)connect:(id)sender;
-(void) activaProtocolo;
@end
#import <UIKit/UIKit.h>
#import "BLEViewController.h"
#import "BLE.h"
@interface sevenSegmentsViewController : UIViewController<EnviarDatos>{
UIImage *unoON;
UIImage *dosON;
UIImage *tresON;
UIImage *cuatroON;
UIImage *cincoON;
UIImage *seisON;
UIImage *sieteON;
UIImage *unoOFF;
UIImage *dosOFF;
UIImage *tresOFF;
UIImage *cuatroOFF;
UIImage *cincoOFF;
UIImage *seisOFF;
UIImage *sieteOFF;
}
@property (strong, nonatomic) IBOutlet UIImageView *uno;
@property (strong, nonatomic) IBOutlet UIImageView *dos;
@property (strong, nonatomic) IBOutlet UIImageView *tres;
@property (strong, nonatomic) IBOutlet UIImageView *cuatro;
@property (strong, nonatomic) IBOutlet UIImageView *cinco;
@property (strong, nonatomic) IBOutlet UIImageView *seis;
@property (strong, nonatomic) IBOutlet UIImageView *siete;
@end
sevenSegmentsViewController.h
#import <UIKit/UIKit.h>
#import "BLE.h"
@protocol EnviarDatos <NSObject>
//Metodo que se manda llamar pero se implementa en otra clase
-(void) actualizaDatos:(NSData*)Data;
@end
@interface BLEViewController : UITableViewController <BLEDelegate>
{
//id <EnviarDatos> delegate;
}
@property (nonatomic,assign)id delegate;
@property (nonatomic, retain) NSData *myData;
+ (BLE*) theBLEObject;
- (void) scanForPeripherals;
- (IBAction)connect:(id)sender;
-(void) activaProtocolo;
@end
#import <UIKit/UIKit.h>
#import "BLEViewController.h"
#import "BLE.h"
@interface sevenSegmentsViewController : UIViewController<EnviarDatos>{
UIImage *unoON;
UIImage *dosON;
UIImage *tresON;
UIImage *cuatroON;
UIImage *cincoON;
UIImage *seisON;
UIImage *sieteON;
UIImage *unoOFF;
UIImage *dosOFF;
UIImage *tresOFF;
UIImage *cuatroOFF;
UIImage *cincoOFF;
UIImage *seisOFF;
UIImage *sieteOFF;
}
@property (strong, nonatomic) IBOutlet UIImageView *uno;
@property (strong, nonatomic) IBOutlet UIImageView *dos;
@property (strong, nonatomic) IBOutlet UIImageView *tres;
@property (strong, nonatomic) IBOutlet UIImageView *cuatro;
@property (strong, nonatomic) IBOutlet UIImageView *cinco;
@property (strong, nonatomic) IBOutlet UIImageView *seis;
@property (strong, nonatomic) IBOutlet UIImageView *siete;
@end
简而言之,当我认为您希望将其设置为“sevenSegmentsViewController”的实例时,您的BLEViewController正在将其委托属性设置为“self”。因此,“if([delegate respondsToSelector:…”测试失败,并且您从未调用过RealizaDatos。如果您正确使用协议,您实际上不需要测试“respondsToSelector”,因为根据定义,代理必须支持协议 编译器和IDE没有向您显示错误,因为您将BLEViewController的属性声明为仅键入“id”,而不是
id<EnviarDatos>
id
如果您修改了属性声明,表示您的代理必须支持正确的协议,您将立即看到突出显示的错误。您希望从
BLEViewController
的实例调用sevenSegmentsViewController
,对吗?但是,我认为有问题在-[sevenSegmentsViewController viewDidLoad]中实例化myBLE
的em
,从某种意义上说,在myBLE.delegate=self;
行之后,实例myBLE
很快就会被释放,因为它不会被保留在任何地方。是的,我键入了它,不知怎的,它在格式设置中丢失了。现在将编辑,谢谢。