如何编写我的.plist文件的CFBundleDocumentTypes属性,以允许应用程序显示在其他应用程序的"Open in ..."对话框中?
这是我的,但它不起作用
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>Readings</string>
<key>LSItemContentTypes</key>
<array>
<string>text.csv</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud) 例:
tapGestureRecognizer.rx.event.asDriver()
.drive(onNext: { [unowned self] _ in
self.view.endEditing(true)
})
.disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)
既然disposeBag是自我控制,我会假设是吗?
我在文档中找不到有关对象生命周期管理的任何提示。
在 XPC 服务中,我是否必须保持对 的强引用NSXPCListener,或者resume调用是否有效地处理了这个问题?
我使用 Swift 和连接创建对象从文件中获取大部分内容main.swift:
// main.swift
if let dependencies = Dependencies().setUp() {
// Actually run the service code (and never return)
NSRunLoop.currentRunLoop().run()
}
Run Code Online (Sandbox Code Playgroud)
我有预感,该dependencies对象(NSXPCListener在设置期间创建)应该保留对侦听器对象的强引用。但resume据说该方法的工作方式类似于操作队列。
相反,客户是否需要留在身边NSXPCConnection?
在 XPC 服务中,在传入连接时,设置是否exportedObject在连接期间保留该对象,还是我必须自己保留对它的强引用?
因此:当多个连接进入时,我应该维护一个exportedObjects 列表吗?
在服务客户端中,我应该获取remoteObjectProxy一次并保留它,还是应该为每次调用重新获取一个代理对象?
我的特殊 XPC 服务是一个始终运行的 launchd 进程,而不是一次性的事情,并且客户端应用程序本身也可能在后台运行几个小时。我担心将代理对象保留到后台服务以进行可能长时间运行的通信是否安全。
如果后台服务崩溃,launchd 会重新启动它们。现在,如果我的服务是“按需启动”服务,那么对代理对象的消息调用是否会在必要时发出重新启动,获取代理对象会这样做,还是仅重新连接才能实现这一点?
谢谢你帮我解决这个问题!
我有一个类,它可以配置为做 2 件稍微不同的事情。我想测试两条路径。该类是UIViewControllerInterface Builder的后代,大部分配置都在Interface Builder 中进行。我需要验证故事板场景和它们的插座是否以相同的方式连接,但还需要检查行为的差异。
为此,我想使用共享的 XCTest 套件。
一种用于左手,一种用于右手。使用该应用程序时,两者都会出现。第一个(右手)触发到另一个的转场。最后一个(左手)应该触发不同的转场。例如,这就是它不同的地方。
现在我想通过测试来验证 segue。我想创建一个BothHandSharedTests套件,两个视图控制器实例测试都使用它来验证它们的所有共同点。然而,BothHandSharedTests该类被视为一个自包含的测试套件,它显然不是。
我想出了这些策略:
你会如何解决这个问题?
cocoa ×1
cocoa-touch ×1
csv ×1
ios ×1
ipc ×1
objective-c ×1
plist ×1
rx-swift ×1
swift ×1
unit-testing ×1
uti ×1
xctest ×1
xpc ×1