简体   繁体   English

Objective-C协议委托不起作用

[英]Objective-C protocol delegate not working

I want to send back an array of objects to myViewController from myRenderer 我想从myRenderer发回一组对象到myViewController

In myRenderer.h: 在myRenderer.h中:

@protocol myProtocol;

@interface myRenderer : NSObject
     @property (weak) id <myProtocol> myDelegate;
@end

@protocol myProtocol <NSObject>
     - (void)sendToMyViewController : (NSMutableArray *) objects;
@end

In myRenderer.mm (C++ / objective-c code): 在myRenderer.mm(C ++ / objective-c代码)中:

@implementation myRenderer

@synthesize myDelegate;
.
.
.
-(void) sendObjects  
{
    [myDelegate sendToMyViewController : objects];

    Problem:
    myDelegate is always <nil>; = (id) 0x0

}
.
.
.
@end

in myViewController.h: 在myViewController.h中:

@interface myViewController : UIViewController <myProtocol>
.
.
.
@end

in myViewController.m: 在myViewController.m中:

@implementation myViewController
.
.
.
- (void)viewDidLoad
{
    renderer = [[MyRenderer alloc] init];   
    renderer.myDelegate = self;
}
.
.
.

-(void) sendToMyViewController : (NSMutableArray *) objects
{
    // do something with objects

    Problem:
    this method is never called !!!
}
.
.
.
@end

Problem: myDelegate is always nil; 问题:myDelegate始终为零; equal to (id) 0x0 and sendToMyViewController never called. 等于(id)0x0,并且从未调用sendToMyViewController。

Thank you for any help. 感谢您的任何帮助。

Solved! 解决了!

@CRD thank you for the hint! @CRD谢谢您的提示!

There was indeed multiple MyRender instances, reducing them to a single instance solved the problem. 实际上有多个MyRender实例,将它们简化为一个实例即可解决该问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM