概述
数据写入任务的抽象对象,消除了管理原始内存缓冲区的需要,。
Creating Data Consumers
CGDataConsumerRef CGDataConsumerCreate(void *info, const CGDataConsumerCallbacks *cbks);
创建使用回调函数写入数据的数据消费者
参数:
- info
指向任何类型或NULL
数据的指针。当调用回调时,Core Graphics
将这个指针作为info
参数传递(比如 CFMutableDataRef)。 - callbacks
指向结构的指针,该结构指定要实现的回调函数,用于复制发送给使用者的数据并处理使用者的基本内存管理。详见下方CGDataConsumerCallbacks
注意:使用完成需要释放对象 ,调用
CGDataConsumerRelease
CGDataConsumerRef CGDataConsumerCreateWithURL(CFURLRef url);
创建一个数据使用者,该数据使用者将数据写入URL指定的位置。
注意:使用完成需要释放对象 ,调用
CGDataConsumerRelease
CGDataConsumerRef CGDataConsumerCreateWithCFData(CFMutableDataRef data);
创建写入CFData
对象的数据使用者。
当需要将核心图形数据表示为CFDataRef
类型时,可以使用此函数。例如,您可以创建CFDataRef
对象,然后将其复制到粘贴板。
注意:使用完成需要释放对象 ,调用
CGDataConsumerRelease
Getting the CFType ID
CFTypeID CGDataConsumerGetTypeID(void);
返回核心图形数据使用者的核心基础类型标识符。
Retaining and Releasing Data Consumers
CGDataConsumerRef CGDataConsumerRetain(CGDataConsumerRef consumer);
增加数据使用者的保留计数。
这个函数等价于
CFRetain
,只是如果使用者参数为NULL,它不会导致错误。
void CGDataConsumerRelease(CGDataConsumerRef consumer);
引用计数-1
和
CFRelease
一样,但这个传NULL
不会报错
Callbacks
typedef size_t (*CGDataConsumerPutBytesCallback)(void *info, const void *buffer, size_t count);
将数据从核心图形提供的缓冲区复制到数据使用者。
- info
回调函数之间共享的私有数据的通用指针。 - buffer
复制指定字节数的缓冲区。 - count
要复制的字节数。
返回值:复制的字节数。如果不能向使用者写入更多数据,则应返回0。
当
Core Graphics
准备好向使用者发送数据时,将调用函数。它应该将指定的字节数从缓冲区复制到您控制的某个资源中—例如,一个文件。
typedef void (*CGDataConsumerReleaseInfoCallback)(void *info);
释放与数据使用者关联的任何私有数据或资源。
- info
回调函数之间共享的私有数据的通用指针。
当
Core Graphics
释放具有相关release
函数的数据使用者时,将调用release
函数。
Data Types
CGDataConsumerCallbacks
结构体,包含指向回调函数的指针,回调函数管理数据使用者的数据复制。
CGDataConsumerCallbacks
结构指定的函数负责复制核心图形发送给使用者的数据,并处理使用者的基本内存管理。
结构体有俩个属性:
- putBytes : CGDataConsumerPutBytesCallback
指向将数据复制到数据使用者的函数的指针 - releaseConsumer : CGDataConsumerReleaseInfoCallback
指向处理数据使用者清理的函数的指针,或NULL。
网友评论