感谢Telegram开源代码,我试图像电报员那样学习我的应用程序的良好行为。
像这里:http://telegram.org/resources/telegram_iphone.src.zip
有趣的2个对象我注意到主要用于对象ASWatcher
& ASHandle
。
我试图了解它究竟应该做些什么。
我试着写几个日志并按照方法。
到目前为止,我理解的是那些对象在UIViewController
上观察项目并跟踪更改,并从对象返回对象和新值。
我不知道我是对还是错,但它在我看来是一种非常有趣的方法或要学习的对象。 如果有人知道,我很乐意在这里提供帮助。
答案 0 :(得分:1)
我知道答案为时已晚,但对于可能仍然感兴趣的人来说:
ASWatcher和ASHandle是 Actor模型的实现,即:
处理并发的概念模型 计算。它为系统的运行方式定义了一些一般规则 组件应该表现并相互交互
使用此模型的最著名的语言可能是 Erlang
演员是计算的原始单位。接收消息并根据消息进行某种计算的东西
这个想法与我们在面向对象语言中的想法非常相似:一个对象接收一条消息(一个方法调用),并根据接收到的消息(我们正在调用哪种方法)执行某些操作。 主要区别在于参与者之间是完全隔离的,并且它们永远不会共享内存。还值得注意的是,一个演员可以维持一个私有状态,永远不能被另一个演员直接更改
重要的是要理解,尽管多个角色可以同时运行,但是一个角色将顺序处理给定的消息。这意味着,如果您向同一演员发送3条消息,则一次只会执行一条。要同时执行这3条消息,您需要创建3个actor并向每个actor发送一条消息。
您可以在 ASHandle 的电报代码中看到:
- (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;
}