CADisplayLinkクラス

2011. 11. 16
●概要

CADisplayLinkオブジェクトは、アプリケーションがディスプレイのリフレッシュレートに描画を同期させるタイマーオブジェクトです。

アプリケーションは新しいディスプレイリンクを生成し、画面が更新された時に呼び出されるセレクタとターゲットオブジェクトを提供します。

次に、アプリケーションは実行ループへディスプレイリンクを追加します。

一度ディスプレイリンクが実行ループに関連付けされると、ターゲット上のセレクタは画面のコンテンツを更新する必要がある時に呼び出されます。

ターゲットは、以前のフレームが表示された時刻を取得するために、ディスプレイリンクのtimestampプロパティ読み取ることができます。

例えば動画を表示するアプリケーションで、次に表示するビデオフレームの計算にtimestampを使用する場合があります。

独自のアニメーションを実行するアプリケーションは、今後のフレームのどこで、どのようにオブジェクトを表示するかの決定にtimestampを使用する場合があります。

durationプロパティはフレーム間の時間の合計を提供します。

この値は次のフレームを表示するおおよその時間や、次のフレームを表示する準備の時間に描画動作を調整するなど、ディスプレイのフレームレートを計算するアプリケーションで使用することができます。

アプリケーションはpausedプロパティをYESに設定することによって通知を無効にすることができます。

また、アプリケーションが提供された時間内にフレームを提供できなかった場合、遅いフレームレートを選択することもできます。

遅くても一定のフレームレートを表示するアプリケーションは、フレームをスキップするアプリケーションよりも、ユーザに対してスムーズに表示されます。

frameIntervalプロパティを変更することによって、(見かけ上のフレームレートを減少させ)フレーム間の時間を増大させることができます。

アプリケーションがディスプレイリンクを終了させる時には、全ての実行ループから削除しターゲットからの関連付けを解除するためにinvalidateを呼び出す必要があります。

CADisplayLinkはサブクラス化してはいけません。



●タスク

●インスタンスの生成


+ displayLinkWithTarget:selector:

●通知を送信するためのディスプレイリンクのスケジューリング


– addToRunLoop:forMode:
– removeFromRunLoop:forMode:
– invalidate

●ディスプレイリンクの構成


  duration  property
  frameInterval    property
  paused    property
  timestamp    property



●プロパティ

Objective-Cのプロパティについての詳細は『The Objective-C Programming Language』の『Properties』を参照してください。

duration

@property(readonly, nonatomic) CFTimeInterval duration

画面を更新する間隔時間です。(読み込みのみ)

ターゲットのセレクタが1回以上呼び出される以前は、期間の値は未定義です。

アプリケーションはdurationにframeIntervalを乗ずることによって、各フレームをレンダリングする合計時間を計算することができます。


frameInterval

@property(nonatomic) NSInteger frameInterval

ディスプレイリンクがターゲットを再度通知する前に経過する必要があるフレーム数です。

デフォルト値は1で、ディスプレイのリフレッシュレートで通知されるアプリケーション内の結果になります。

値が1より大きい値に設定されている場合、ディスプレイリンクはネイティブのリフレッシュレートの極僅かな時間でアプリケーションに通知します。

例えば間隔を2と設定すると、ディスプレイリンクが他の全てのフレームを発生させるのに、半分のフレームレートを提供します。

値が1より小さい値にに設定されている場合の動作は未定義で、プログラマのエラーになります。


paused

@property(getter=isPaused, nonatomic) BOOL paused

ディスプレイリンクのターゲットへの通知が中断されているかを示すブール値です。

デフォルト値はNOです。

YESの場合、ディスプレイリンクはターゲットへ通知を送信しません。


timestamp

@property(readonly, nonatomic) CFTimeInterval timestamp

表示された最後のフレームに関連付けられている時間の値です。(読み込みのみ)

ターゲットは、次のフレームに何を表示すべきかを計算するために、このプロパティの値を使用する必要があります。



●クラスメソッド

displayLinkWithTarget:selector:

+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel

新しいディスプレイリンクを返します。

戻り値は新たに構築されたディスプレイリンクになります。

ターゲット上で呼び出されるセレクタは、以下のシグネチャを持つメソッドにする必要があります。

- (void) selector:(CADisplayLink *)sender;

センダーは、このメソッドによって返されるディスプレイリンクです。

新たに構築されたディスプレイリンクはターゲットを保持します。

target:画面が更新された時にオブジェクトに通知するターゲットを指定します。

sel:ターゲット上で呼び出すメソッドを指定します。



●インスタンスメソッド

addToRunLoop:forMode:

- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSString *)mode

実行ループにディスプレイリンクを登録します。

複数の入力モードのディスプレイリンクに関連付けることができます。

実行ループが指定したモードで実行している間、ディスプレイリンクは新しいフレームが要求された時にターゲットを通知します。

実行ループはディスプレイリンクを保持します。

全ての実行ループからディスプレイリンクを削除するには、ディスプレイリンクにinvalidateメッセージを送信します。

runloop:ディスプレイリンクに関連付ける実行ループを指定します。

mode:実行ループに追加するディスプレイリンクのモードを指定します。
カスタムモードを指定するか、『NSRunLoopクラス』に記載されているモードの一つを使用することができます。


invalidate

- (void)invalidate

全ての実行ループのモードからディスプレイリンクを削除します。

全ての実行ループのモードからディスプレイリンクを削除すると、実行ループによって解放されます。

ディスプレイリンクもまたターゲットを解放します。


removeFromRunLoop:forMode:

- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSString *)mode

指定したモードの実行ループからディスプレイリンクを削除します。

実行モードに関連付けられたディスプレイリンクが既に無い場合は、実行ループディスプレイリンクを解放します。

runloop:ディスプレイリンクに関連付けられた実行ループを指定します。

mode:ディスプレイリンクが実行されている実行ループのモードを指定します。



参考文献

CADisplayLink Class Reference






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
10 | 2017/11 | 12
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR