我不明白为什么我不能设置委托。我正在使用UINavigationController在两个视图之间切换。这是我的代码

SecondViewProtocol.h

#import <Foundation/Foundation.h>

@protocol SecondViewProtocol <NSObject>
    @required
    -(void)textFieldDidChange:(NSString *)data;
@end


SecondView.h

#import <UIKit/UIKit.h>
#import "SecondViewProtocol.h"
@interface SecondView : UIViewController

@property (nonatomic, retain) id<SecondViewProtocol>delegate;
@end


SecondView.m

@synthesize delegate = _delegate;
.......

-(IBAction)textFieldReturn:(id)sender
{
    [[self delegate] textFieldDidChange:[self.textField text]];
}

.......


我已经在FirstView.h中导入SecondViewProtocol.h

FirstView.m

....
SecondView *secondView = [[SecondView alloc]init];
secondView.delegate = self;
....


在这里,我从不兼容的类型FirtView中获取分配给ID的信息。

这是怎么了?

最佳答案

首先,委托属性应声明为assign,而不是retain。您永远不要保留代表。
其次,FirstView应该符合SecondViewProtocol,如下所示。

@interface FirstView: UIViewController <SecondViewProtocol>

关于objective-c - 代表问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9452257/

10-14 20:57