我目前正在尝试自学Cocoa开发.为此,我购买了一本非常出色的书,即适用于Mac OS X的可可食谱:佛蒙特食谱,它开始创建一个示例应用程序.它非常好,但它是针对XCode 3.2而不是XCode 4编写的.到目前为止,我已经能够自己解决这个问题,但是我遇到了一个无法弄清楚如何遵循指令的问题.
本质上,本书通过子类化的示例案例,NSDocumentController以便应用程序可以处理两个(最终可能是任意数量)不同类型的文档,因此它为每种类型打开适当的窗口.所以,我已经创建了一个自定义子类NSDocumentController(本书调用了VRDocumentController),现在我需要使它在应用程序启动过程中相对较早地加载此控制器的实例.基本上,类是单例,因此我必须在应用程序实例化标准类之前实例化我的,这必须在过程的早期完成.很公平.
本书引用Apple文档来继承NSDocumentController,该文档声明有两种方法可以解决问题:在MainMenu.xib文件中实例化类或在-applicationWillFinishLaunching:委托方法中实例化类.Apple文档没有明确说明如何执行这些操作(稍后会详细介绍),本书仅涵盖第一个版本,我认为这可能是我首选的方法.
我的问题:我不能为我的生活在XCode 4中解决这个问题.本书为XCode 3.2提供的说明不再准确,因为Interface Builder现在已经改组为XCode本身和新版本的"类选项卡"不再显示我的项目的课程.我发现Stack Overflow上的这个问题提出了类似的问题,所以我试着按照那里接受的答案.但是,当我打开Identity Inspector并尝试键入时VRDocumentController,它只会发出哔哔声并且不会接受它.我写的其他控制器类似乎都不是可接受的输入.
我也很乐意去另一条路线; 在-applicationWillFinishLaunching方法中实例化副本.但是,我不知道该方法实际属于哪个类,或者它的返回类型是什么.我也做了非常微不足道的搜索,没有运气.
免责声明:我是 Rust 的新手(以前的经验是 Python、TypeScript 和 Go,按顺序),我完全有可能遗漏了一些非常明显的东西。
我正在尝试构建一个 Rust 时钟接口。我在这里的基本目标是我有一个报告实际时间的小时钟结构,以及一个报告伪造版本以供测试的存根版本。请注意,这些是历史测试而不是单元测试:我的目标是重放历史数据。我认为部分问题也可能是我理解chrono得不够好。这显然是一个伟大的图书馆,但我有在主场迎战类型实例关系的麻烦chrono和chrono_tz。
无论如何,这就是我所拥有的:
use chrono::{DateTime, TimeZone, Utc};
/// A trait representing the internal clock for timekeeping requirements.
/// Note that for some testing environments, clocks may be stubs.
pub trait Clock<Tz: TimeZone> {
fn now() -> DateTime<Tz>;
}
Run Code Online (Sandbox Code Playgroud)
我的最终目标是让其他结构dyn Clock在特定时区有一个。该时钟可能是系统时钟(具有适当的时区转换),也可能是某种存根。
这是我对系统时钟垫片的尝试,一切都发生了可怕的错误:
/// A clock that reliably reports system time in the requested time zone.
struct SystemClock<Tz: TimeZone> {
time_zone: std::marker::PhantomData<*const Tz>,
}
impl<Tz: TimeZone> Clock<Tz> …Run Code Online (Sandbox Code Playgroud)