2016-10-25 2 views
0

Я знаю, что есть много вопросов, которые задают вопрос о том, как решить «Нуль передан вызываемому, требующему ненулевой аргумент», но я действительно не могу показаться найти решение для моей проблемы.PasteboardPutItemFlavor Null передан вызываемому абоненту, который требует непустого аргумента

Я использую функцию под названием PasteboardPutItemFlavor в своем коде. Он скомпрометирует, если я установил цель развертывания 10.12, созданную против macSDK10.12. После того, как я установил цель развертывания в 10.8, но все еще скомпилировал ее против macSDK10.12, у меня возникла ошибка при вызове PasteboardPutItemFlavor. Сообщение об ошибке «Null передается вызываемому абоненту, для которого требуется непустой аргумент». Что означает эта ошибка? kPasteboardFlavorNoFlags определяется как 0, изменение на другое постоянное значение ничего не меняет.

Как решить эту ошибку с помощью 10.8 в качестве цели развертывания и скомпилировать ее против 10.12?

PasteboardPutItemFlavor(
      m_pboard, 
      nullptr, 
      flavorType, 
      dataRef, 
      kPasteboardFlavorNoFlags); 

Функция декларации

OSStatus PasteboardPutItemFlavor(PasteboardRef inPasteboard, PasteboardItemID inItem, CFStringRef inFlavorType, CFDataRef inData, PasteboardFlavorFlags inFlags); 

ответ

1

Я посмотрел в файл заголовка от 10.12 SDK. Файл заголовка деформируется с помощью ненулевого макроса. Поэтому любой указатель с этим макросом будет объявлен как ненулевой. В моем случае это параметр nullptr. Я просто создаю локальную переменную и устанавливаю ее в 0, а затем передаю ее в PasteboardPutItemFlavor. Это решает ошибку.

Смежные вопросы