- initWithFilePresenter:
Overview 概要
The NSFile
class coordinates the reading and writing of files and directories among multiple processes and objects in the same process. You use instances of this class as is to read from, write to, modify the attributes of, change the location of, or delete a file or directory, but before your code to perform those actions executes, the file coordinator lets registered file presenter objects perform any tasks that they might require to ensure their own integrity. For example, if you want to change the location of a file, other objects interested in that file need to know where you intend to move it so that they can update their references.
NSFile
クラスは、複数のプロセスおよび同じプロセス中の複数のオブジェクトの間でファイルとディレクトリの読み出しや書き込みを調整します。あなたはこのクラスのインスタンスをそのままで使用して、ファイルまたはディレクトリから読み出し、それへと書き込み、その属性を修正し、その位置を変更し、またはそれを削除します、しかしそれらのアクションを実行するあなたのコードが成し遂げる前に、ファイルコーディネータは登録されたファイルプレゼンタオブジェクトそれらに何らかのタスクを実行させます、それはそれらがそれら自身の整合性を確実にするのに必要かもしれないものです。例えば、あなたがあるファイルの位置を変更したいならば、そのファイルに関心のある他のオブジェクトそれらは、あなたがそれをどこに移動するか知る必要があります、それでそれらはそれらの参照を更新できます。
Objects that adopt the NSFile
protocol must register themselves with the NSFile
class to be notified of any pending changes. They do this by calling the add
class method. A file presenter must balance calls to add
with a call to remove
before being released, even in a garbage-collected application. The file presenter class maintains a list of active file presenter objects in the current application and uses that list, plus the file coordinator classes in other processes, to deliver notifications to all of the objects interested in a particular item.
NSFile
プロトコルを採用するオブジェクトそれらは、それら自身をNSFile
クラスに登録することで、あらゆる差し迫る変更を通知されなければなりません。それらは、これをadd
クラスメソッドを呼び出すことで行います。あるファイルプレゼンタは、解放される前に、add
への呼び出しとremove
への呼び出しの帳尻を合わせなければなりません、ガベージコレクトされたアプリケーションにおいてさえもです。ファイルプレゼンタクラスは、現在のアプリケーションにおける現行のファイルプレゼンタオブジェクトのリストを保守します、そしてそのリスト、加えて他のプロセスにおけるファイルコーディネータクラスそれらも使って、ある特定の項目に関心をよせる全てのオブジェクトに通知を届けます。
Instances of NSFile
are meant to be used on a per-file-operation basis, where a file operation is something like opening and reading the contents of a file or moving a batch of files and directories to a new location. There is no benefit to keeping a file coordinator object past the length of the planned operation. In fact, because file coordinators retain file presenter objects, keeping one around could prevent the file presenter objects from being released in a timely manner.
NSFile
のインスタンスは、ファイル毎演算基盤で使われることを意図されます、ここであるファイル演算は、ファイルを開くそしてその内容を読み出すまたは一束のファイルおよびディレクトリを新しい場所に移動するようなことです。あるファイルコーディネータをその計画された演算の期間を過ぎて残しておく利点はありません。実際、ファイルコーディネータがファイルプレゼンタオブジェクトを保持するので、念のためそれを取っておくことは、ファイルプレゼンタオブジェクトが時宜を得た流儀で解放されるのを妨げる可能性があります。
For information about implementing a file presenter object to receive file-related notifications, see NSFile
.
ファイルプレゼンタオブジェクトを実装してファイル関連の通知を受け取ることについての情報として、NSFile
を見てください。
File Presenters and iOS ファイルプレゼンタとiOS
If your app or extension enters the background with an active file presenter, it may be terminated by the system in order to prevent deadlock on that file. To prevent this situation, call remove
to remove the file presenter in the application
method or in response to a UIApplication
notification. Call add
to add the file presenter again in the application
method or in response to a UIApplication
notification.
あなたのアプリまたは拡張がある現行のファイルプレゼンタとともにバックグラウンドに入るならば、それはそのファイルに関してデッドロックを防ぐ目的でシステムによって終了されるかもしれません。この状況を防止するには、remove
を呼び出してそのファイルプレゼンタをapplication
メソッドにおいてまたはUIApplication
通知に答えて取り除いてください。add
を呼び出すことで、再びファイルプレゼンタをapplication
メソッドにおいてまたはUIApplication
通知に答えて加えてください。
Note 注意
The UIDocument
class automatically removes itself when your app goes to the background. It automatically adds itself again when your app returns to the foreground.
UIDocument
クラスは、あなたのアプリがバックグラウンドに回る場合に、自動的にそれ自身を取り除きます。それは、あなたのアプリが前面に戻る場合に、自動的に再びそれ自身を加えます。
File Coordinators and iOS ファイルコーディネータとiOS
A coordinated read or write will automatically begin a background task when granted, similar to one created with the begin
method. This helps ensure that your app or extension has sufficient time to finish the read or write operation if it’s suspended, without creating a deadlock on access to that file by other processes. If a process is suspended while waiting for a coordinated read or write to be granted, the request is canceled, and an NSError
object with the code NSUser
is produced. If the background task expires, the process is terminated.
協調(コーディネートされた)読み込みまたは書き込みは、認められる場合に自動的にバックグラウンドタスクを始めます、begin
メソッドで作成されたものに似て。これは、あなたのアプリまたは拡張が、それが一時停止されるならば読み出しまたは書き込み演算を完了するのに十分な時間を持つことを確実にする助けとなります、デッドロックをそのファイルに対するアクセスに関して他のプロセスによって作成することなしにです。協調読み出しまたは書き出しが認められるのを待っている間にあるプロセスが一時停止されるならば、そのリクエストはキャンセルされます、そしてNSError
オブジェクトがコードNSUser
とともに生成されます。バックグラウンドタスクが期限切れになるならば、そのプロセスは終了されます。
Note 注意
The UIDocument
class automatically requests additional background time and safely performs coordinated reads and writes when loading and saving the document.
UIDocument
クラスは追加のバックグラウンド時間を自動的に要請します、そして書類をロードおよび保存する時に協調読み出しまたは書き込みを安全に実行します。
Threading Considerations スレッドの考察
Each file coordinator object you create should be used on a single thread only. If you need to coordinate file operations across multiple objects in different threads, each object should create its own file coordinator. あなたが作成する各ファイルコーディネータオブジェクトは、単一のスレッドだけで使われるべきです。あなたが異なるスレッドにおける複数のオブジェクトにまたがって協調ファイル演算を必要とするならば、各オブジェクトはそれ独自のファイルコーデネータを作成するべきです。