我有一个创建 ObjectA 的视图控制器。然后 ObjectA 创建 ObjectB。ObjectB 需要从视图控制器获取一些值(我需要在创建对象后可以更改的值)。
我试图找出检索值的最佳方法。我的第一个想法是协议。到目前为止,我只在一个对象中创建了协议:
#import <UIKit/UIKit.h>
@protocol AnalysisTypeTableDelegate;
@interface AnalysisTypeTableViewController : UITableViewController
@property (weak, nonatomic) id <AnalysisTypeTableDelegate> delegate;
@property (strong, nonatomic) NSArray *dataSource;
@property (nonatomic) BOOL allowRefresh;
@end
@protocol AnalysisTypeTableDelegate <NSObject>
-(void)returnAnalysisType:(NSString *)type;
@end
如何创建协议类(例如创建新文件、objective-c 协议)?
那么如何将它们链接在一起呢?ObjectA 有一个协议,我会做类似的事情吗:
// View controller and objectB both conform to myProtocol
// view controller creates objectA
myObjectA.delegate = self
// when objectA creates objectB
myObjectB.delegate = self.delegate
还是有更好的方法来检索我需要的值?
编辑:
我想我需要做这样的事情:
objectA 的协议:
@protocol objectADelegate
-(NSDictionary)requestViewController;
@end
objectB 的协议:
@protocol objectBDelegate
-(NSDictionary *)requestObjectA;
-(void)updateList:(NSSarray *)list;
@end
在我的对象B
-(NSDictionary *)requestObjectA {
NSDictionary *extents = [self.delegate requestObjectA];
}
-(void)serverCall {
// make server call, get list
...
// update myObjectA with new list
[self.delegate updateList:newList];
在我的对象A
-(NSDictionary *)requestObjectA {
return [self.delegate requestViewController];
}
-(void)updateList:(NSArray)list {
// updates list
}
在视图控制器中
-(NSDictionary *)requestViewController;
return self.mapkit.exents;
}