Как упомянуто CuriouslyRecurringThoughts и Jarod42, проблема была связана с присвоением nullptr
m_ageDetectImplPtr
Следующий код работает
class AgeDetectImpl;
class AgeDetect {
public:
AgeDetect(std::string token);
~AgeDetect();
std::string getAge(std::string imagepath);
std::string getAge(uint8_t* buffer, size_t rows, size_t cols);
std::string getAge(const cv::Mat& image);
private:
std::unique_ptr<AgeDetectImpl> m_ageDetectImplPtr;
};
Большинство контейнеров не позволяют вставлять в них объект 'nil'. Если вы действительно хотите вставить нулевое значение в свой контейнер, можно использовать экземпляр NSNull (NSNull - это одноэлемент).
В вашем конкретном примере контроллер извлекается из массива. В таком случае рекомендуется убедиться, что объект не является экземпляром NSNull.
Классы коллекции, такие как NSArray
и NSDictionary
, не могут содержать значений nil
. Ваш ivar, viewController
, является экземпляром класса коллекции. NSNULL
был создан специально как заполнитель для nil
, и вы можете поместить его в классы коллекций.
Класс NSNull
определяет одноэлементный объект, что означает, что существует только один экземпляр NSNull
(который вы создаете с помощью [NSNull null]
) , но его можно использовать в любом количестве мест.