<分区>
我有一个关于委托(delegate)概念的一般性问题。我看过一个代码示例,其中基本上 (VC = ViewController) VC1 打开 VC2 并通过 segue 将一个对象传递给它。 VC2 修改对象并将其传回 vc1,然后自行关闭。
VC2 有一个 @property (assign, nonatomic) id<DismissViewDelegate> delegate;
属性(property)。在 VC1 通过 segue 打开 VC2 之前,它设置 VC2.delegate = self;
. VC1和VC2都实现了如下协议(protocol):
DismissViewDelegate.h
@protocol DismissViewDelegate <NSObject>
-(void)dismissWithProdukt:(Produkt*)produkt;
@end
我的问题是,由于我不熟悉自己创建的委托(delegate)和协议(protocol),这种方法与为 VC2 提供指向 VC1 的弱指针有何不同,例如:
@property (weak, nonatomic) VC1 *firstVC;
所以我可以说:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
VC2 *vc2 = *dvc = segue.destinationViewController;
vc2.firstVC = self;
}
然后,在修改对象之后,我会从 VC2 传递对象,如 firstVC.object = self.object
然后关闭VC2。
这两种方法和结果有什么不同吗?或者第二种解决方案是否有效?委托(delegate)方法的优势在哪里?非常感谢!
最佳答案
您始终可以将一个 Controller 的弱指针指向另一个 Controller ,但委托(delegate)的目的不仅仅是拥有该弱链接。您可以将方法与委托(delegate)相关联,从而为您提供组织良好的代码。尽管您始终可以提供弱指针,然后使用该弱指针执行方法(尽管这不是可接受的做法)
关于ios - 委托(delegate)优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775169/