gpt4 book ai didi

objective-c - 如果委托(delegate)不存在,如何调用本应调用的方法

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:51 25 4
gpt4 key购买 nike

我正在 Cocoa Touch API 上实现一个可选的委托(delegate)方法。我想做的是,首先调用如果我没有实现委托(delegate),将会被调用的方法……然后对结果进行更改……然后返回我修改后的版本。

这是一个例子:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; {
/* this line: */ UIView * headerView = [someObject tableView:tableView viewForHeaderInSection:section];
[headerView setBackgroundColor:[UIColor redColor]];
return headerView;
}

标记的行不起作用。我可以放置 someObject = tableView.delegate,但这只会给我无限递归。如果未实现可选方法,是否有一些技巧可以使 tableView 执行它会执行的操作?我不是很有希望,但如果可能的话会很酷。

最佳答案

如果您没有实现委托(delegate),则不会调用任何方法。委托(delegate)不像子类;它们不是语言功能。 UITableView(在本例中)做了一些工作,查看它的 -delegate 属性是否为非 nil(这只是一个恰好称为“delegate”的随机 ivar),如果是这样,它会看到委托(delegate)实现了委托(delegate)方法,如果有则调用它,然后再做一些工作。

UITableView 没有公开默认的部分标题 View (我相信它是一个名为 UISectionHeaderCell 的私有(private)子类),因此 Apple 没有就其实现方式做出任何 promise 。或给我们一个很好的方法来获取它有几种方法可以获取有问题的 View ,但 Apple 尚未为我们提供任何我所知道的支持方法。

但是对于有关委托(delegate)的一般性问题,您所要求的并不存在,因为这不是委托(delegate)的实现方式。

关于objective-c - 如果委托(delegate)不存在,如何调用本应调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com