gpt4 book ai didi

objective-c - Three20 - 共享 View Controller 的打开 url

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:40 24 4
gpt4 key购买 nike

我知道如果使用 from:toViewController: 映射 url,然后打开该 url 将创建一个新的 View Controller ,如果使用 from:toSharedViewController 则共享将使用实例。

但是举个例子

 [map from:@"tt://tabbar/(initWithString:)" toSharedViewController:[MyTabbarController class]];
TTOpenURL(@"tt://tabbar/string");

这将调用类似于

 [[MyTabbarController alloc] initWithString:@"string"]

但是如果稍后调用 TTOpenURL(@"tt://tabbar/somethingelse") 会发生什么?由于使用了共享对象,因此 initWithString: 是否会在同一个实例上被调用两次?

最佳答案

答案是:没有。即,不会在已经初始化的实例上调用 init,而是分配并初始化一个新实例。

这是由于 Three20 将对象与其完整 URL 相关联,在您的情况下是“tt://tabbar/string”或“tt://tabbar/somethingelse”,因此在查询 时TTURLMap,将找不到已存在的对象并实例化一个新对象。至少,Three20 1.0.3 是这样。但我猜他们并没有改变这一点。

在我看来,共享 Controller 机制将在非常特殊的情况下使用,例如设置 View ,不应将其视为一种 Three20 实现的单例。每次我试图依靠它来更“巧妙地”使用 TTURLMap 时,我发现自己又回到了非共享 Controller 。

关于objective-c - Three20 - 共享 View Controller 的打开 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250470/

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