Что это (NSNull*) контроллер == [пустой указатель NSNull] предполагаемый сделать? Почему не только контроллер == ноль?

Как упомянуто 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;
    };
11
задан Thanks 13 May 2009 в 21:48
поделиться

2 ответа

Большинство контейнеров не позволяют вставлять в них объект 'nil'. Если вы действительно хотите вставить нулевое значение в свой контейнер, можно использовать экземпляр NSNull (NSNull - это одноэлемент).

В вашем конкретном примере контроллер извлекается из массива. В таком случае рекомендуется убедиться, что объект не является экземпляром NSNull.

12
ответ дан 3 December 2019 в 08:57
поделиться

Классы коллекции, такие как NSArray и NSDictionary , не могут содержать значений nil . Ваш ivar, viewController , является экземпляром класса коллекции. NSNULL был создан специально как заполнитель для nil , и вы можете поместить его в классы коллекций.

Класс NSNull определяет одноэлементный объект, что означает, что существует только один экземпляр NSNull (который вы создаете с помощью [NSNull null] ) , но его можно использовать в любом количестве мест.

1
ответ дан 3 December 2019 в 08:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: