/* Page prose (zh-Hans) */
"SubclassingOperation" = "# 为 Operation 创建子类：带输入和输出的工作\n\n`BlockOperation` 很方便，但它的全部工作都活在一个闭包里。操作真正的威力体现在你创建自己的**子类**时，因为那样操作就可以持有**输入**并把**输出**作为属性暴露出来，而且你可以像复用任何其他类型一样复用它。\n\n你为 `Operation` 创建子类并重写一个方法：**`main()`**。`main()` 做的任何事情*就是*那份工作。在本章里我们让它保持**同步**：`main()` 从上到下运行，一旦 `main()` 返回，操作就完成了。\n\n这是给印刷店用的一个 `PosterJob`。它把一个标题和一个份数作为输入，并产生一个渲染好的海报字符串作为它的输出。";
"SubclassingOperation-2" = "**观察运行：**在 `start()` 返回之后，`main()` 已经运行过了，所以 `renderedPoster` 里保存着结果：一行星号，然后是 `Jazz Night x50`，然后又是一行星号。\n\n注意这个形态：**输入通过 `init` 进去，工作发生在 `main()` 里，结果通过一个属性出来。**这是一个可复用、可检查的工作单元，是光秃秃的闭包给不了你的东西。\n\n* callout(试一试): 把 `print(Thread.isMainThread)` 加为 `main()` 的第一行。用这个直接的 `.start()` 调用，它报告 `true` 还是 `false`？\n\n[上一页](@previous)  |  第 6 / 9 页  |  [下一页: 在队列上运行你的子类](@next)";
