Как преобразовать CFDataRef в NSData? - PullRequest
19 голосов
/ 27 сентября 2010

Как конвертировать CFDataRef в NSData?

У меня есть CFDataRef, и я хочу преобразовать его в NSData. Я не понимаю, как это сделать.

кто-нибудь, помогите мне ..

    CGDataProviderRef dataProvider = CGImageGetDataProvider(screenShot);
    CFDataRef data = CGDataProviderCopyData(dataProvider);
    CGDataProviderRelease(dataProvider);
    NSString *imagePathLocation = [destinationPath stringByAppendingString:[@"/" stringByAppendingString:DesktopImage]];
    [[NSFileManager defaultManager]createFileAtPath: imagePathLocation contents:nil attributes:nil];
    fileHandleForImage = [NSFileHandle fileHandleForWritingAtPath:imagePathLocation];
    NSData * data1 = (NSData *)data;
    [fileHandleForImage writeData:data1];

Когда я печатаю (NSData * data1 = (NSData *)data), изображение искажается.

Ответы [ 2 ]

27 голосов
/ 27 сентября 2010

Это бесплатный мост, так что вы просто должны разыграть его.

NSData *myData = (NSData *)myCFDataRef;
12 голосов
/ 04 августа 2012

Как сказал @KrisMarkel, вам просто нужно передать право собственности на ARC следующим образом:

Как и для передачи права собственности:

NSData* data1 = (__bridge_transfer NSData*) data;

, чтобы использовать ссылку без передачи права собственности:

NSData* data2 = (__bridge NSData*) data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...