gpt4 book ai didi

ios - 了解 Telegram iOS 开源 ASWatcher 和 ASHandle 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:42 36 4
gpt4 key购买 nike

感谢 Telegram 开源代码,我正在努力学习我的应用程序的良好行为,就像 Telegram 人员所做的那样。

喜欢这里:http://telegram.org/resources/telegram_iphone.src.zip

我注意到 2 个有趣的对象主要用于对象 ASWatcherASHandle。我试图了解它到底应该做什么。我试着放了一些日志并按照方法进行操作。到目前为止,我所了解的是那些对象观察 UIViewController 上的项目并跟踪更改,并返回对象和对象的新值。

我不知道我是对还是错,但在我看来这是一种非常有趣的方法或学习对象。如果有人知道,我很乐意在这里提供帮助。

最佳答案

我知道现在回答为时已晚但是对于可能仍然感兴趣的人:

ASWatcher 和 ASHandle 是 Actor 模型 的实现,它是:

A conceptual model to deal with concurrent computation. It defines some general rules for how the system’s components should behave and interact with each other

使用这种模型的最著名的语言可能是 Erlang

Actor 是原始的计算单位。它是接收消息并根据消息进行某种计算的东西

这个想法与我们在面向对象语言中的想法非常相似:对象接收消息(方法调用)并根据接收到的消息(我们正在调用的方法)执行某些操作。主要区别在于 actors 彼此完全隔离,他们永远不会共享内存。同样值得注意的是,一个 actor 可以维护一个永远不能被另一个 actor 直接更改的私有(private)状态

了解这一点很重要,尽管多个 actor 可以同时运行,但一个 actor 将按顺序处理给定的消息。这意味着如果您向同一个 actor 发送 3 条消息,它只会一次执行一个。要同时执行这 3 条消息,您需要创建 3 个参与者并向每个参与者发送一条消息。

正如您在 ASHandle 中的 Telegram 代码中所见:

- (void)reset
{
TG_SYNCHRONIZED_BEGIN(_delegate);
_delegate = nil;
TG_SYNCHRONIZED_END(_delegate);
}

- (bool)hasDelegate
{
bool result = false;

TG_SYNCHRONIZED_BEGIN(_delegate);
result = _delegate != nil;
TG_SYNCHRONIZED_END(_delegate);

return result;
}

进一步阅读:Wikipediathis

关于ios - 了解 Telegram iOS 开源 ASWatcher 和 ASHandle 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381982/

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