NSDisplayLinkUpdateLoop是一个简单的对象,它可以在屏幕更新时通知您的应用程序。
这简化了您的更新循环构建,提供了比NSTimer更高的精度,并允许与屏幕更新同步(参考:Fabien Sanglard关于NSTimer存在的问题以及他的替代解决方案的精彩阅读)。
要使用NSDisplayLinkUpdateLoop,首先让您的对象继承并实现NSDisplayLinkUpdateLoopDelegate接口
#include "NSDisplayLinkUpdateLoop.h"
@interface IWannaUpdate : NSObject< NSDisplayLinkUpdateLoopDelegate >
...
@implementation IWannaUpdate
-( void )update:( NSTimeInterval )deltaTime
{
...
}
然后实例化一个NSDisplayLinkUpdateLoop,让您的对象订阅
-( void )startUpdates
{
IWannaUpdate* updateMe = [ [ IWannaUpdate alloc ] init ];
updateLoop = [ [ NSDisplayLinkUpdateLoop alloc ] init ];
[ updateLoop subscribe:updateMe ];
}
要停止接收更新调用
[ updateLoop unsubscribe:updateMe ];
很简单!
NSDisplayLinkUpdateLoop保留其订阅者,请确保您理解在创建引用所有权循环时的时机!