Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 代理未响应_Ios_Objective C_Delegates_Protocols - Fatal编程技术网

Ios 代理未响应

Ios 代理未响应,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

我尝试在我的应用程序中使用委托和协议调用另一个方法。我需要将变量“myData”发送到另一个视图,但由于某些原因,它无法工作。我不知道我在代理和协议的实现方面做错了什么。委托从不调用协议的操作

对不起,我是新来的

BLEViewController.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.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
很快就会被释放,因为它不会被保留在任何地方。是的,我键入了它,不知怎的,它在格式设置中丢失了。现在将编辑,谢谢。