gpt4 book ai didi

cocoa-touch - 使用通知中心重新加载 UITableView 可以吗?

转载 作者:行者123 更新时间:2023-12-04 04:52:24 25 4
gpt4 key购买 nike

我被告知不要滥用通知中心,因为我正在努力学习正确的 IOS 开发。我发现有几种方法可以做事,但这并不意味着它是正确的或最有效的。

这是一个示例:我编写了一个 RSS 提要阅读器应用程序,简而言之,我使用一个单例类从 Web 加载所有数据,还下载缩略图,然后为我的 tableview 缓存每个图像(tableview 单元格具有帖子标题、缩略图和日期) .

用户可以选择随时刷新数据,这基本上将我的所有数据和缩略图数组设置为 nil,然后重新获取新数据。 (我知道我的所有数据都消失了,因此核心数据将是更好的选择)。

所以这里是问题 - 当数据加载并准备好使用时,我使用我的单例类中的通知中心(默认中心)来重新加载和停止我的 tableview Controller 中的微调器。它很有魅力,但这是正确的 IOS 编程吗,换句话说,这是我可以向人们展示的东西(工作面试等)吗? (如果不是,你会怎么做?)。

最佳答案

我认为使用通知没有任何问题。但我个人认为通知更适用于两个不相关的对象需要以某种方式相互通信的情况(或相关的对象,但关系是通过多个节点,这将导致繁琐的代码来保持相互的引用)。对于您的问题,表 View 可以直接使用 RSS 单例,例如

-(void)refreshTapped {

[[RSSFeed singleton] loadDataWithSuccessBlock:^{
// Reload the table here
// Make sure you use dispatch_async to perform GUI work on the main thread
} failureBlock:^{
// Handle Error
}
}

哪里 RSSFeed是处理加载数据的单例类。也许这样更好?

通知的另一个用途是用于“全局”事件,例如 iOS 经常使用(例如应用程序进入后台/前台),没有人确切知道它们发生的原因。一个例子:如果你想定期刷新提要(不需要用户按下按钮),通知将是一个不错的选择(可能是唯一的选择)。

我在我的应用程序中使用了很多通知,但从未见过性能问题。唯一的问题是添加 removeObserver...当您的 View 被释放时。

关于cocoa-touch - 使用通知中心重新加载 UITableView 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251927/

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