- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Apple 的 NSPrintInfo 文档部分说明:
A shared NSPrintInfo object is automatically created for an application and is used by default for all printing jobs for that application.
方法sharedPrintInfo
返回共享的NSPrintInfo
。没有明确说明的是,如果您更改该对象(例如,通过使用 setOrientation ),所述更改是否会“粘在”共享对象上?即,您返回的对象是单例对象还是共享对象的新副本?
我问这个问题的一个原因是,我在 Apple 的一些示例代码中看到,他们在打印作业结束时显式调用 setSharedPrintInfo
。如果共享对象是单例,他们为什么要这样做?
看来我的问题必须更清楚了。从 Apple 的文档中可以看出,存在一个“共享”实例 NSPrintInfo
。当方法调用中没有显式使用 NSPrintInfo 对象时,默认使用此“共享”实例。 sharedPrintInfo
方法返回指向此“共享”实例的指针。
不清楚的是 sharedPrintInfo
是否克隆“共享”实例并返回指向该实例的指针,或者只是返回指向现有实例的指针。
如果是克隆,则任何调用(例如对 setOrientation
的调用)都只会影响克隆。如果我还想更改“共享”实例的方向,我必须调用 setSharedPrintInfo
提供更改后的克隆作为参数。
如果没有克隆,则不清楚为什么 Apple 的示例代码显式调用 setSharedPrintInfo
,因为所有方法调用都会更改 sharedPrintInfo
返回的 NSPrintInfoObject
的状态code> 已经影响了“共享”实例。
最佳答案
What's not explicitly stated is if you alter that object (e.g., by using setOrientation), do said alterations "stick" with the shared object? I.e., is the object you get back a singleton or a fresh copy of the shared object?
Setter 通常返回 void
;它们不会返回您设置其属性的对象。 NSPrintInfo 的 setOrientation:
方法就是一个示例。
返回已应用更改的接收者副本的方法在其名称中明确说明 - 例如,stringByAppendingString:
(返回修改后的副本),而不是 appendString:
(修改接收者)。
因此 NSPrintInfo 的 setter 仅影响您向其发送这些消息的对象。如果您发送setOrientation:
到共享打印信息,您就修改了该对象;您没有创建新的打印信息。
好的,现在回答你的实际问题。
如果您查看 NSDocument,您会发现每个文档都可以有自己的打印信息。当用户进入页面设置时,他们在文档窗口上的工作表中进行操作,并且他们的更改仅影响该文档 - 这只有通过为每个文档提供自己的打印信息才能实现。如果您的应用程序不是基于文档的,那么它可能是一个单窗口应用程序,整个过程的一个打印信息就可以了。
NSDocument 的文档指出了一种特定情况:您可以在 NSDocument 子类中重写其 printInfo
方法,以始终使用共享打印信息对象。我无法想象您为什么要这样做,但在这种情况下,共享打印信息对象实际上是在所有打开的文档之间共享的。
关于objective-c - NSPrintInfo 共享 PrintInfo 到底是如何共享的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723980/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!