Изображение вместо контакт по умолчанию в платформе MapKit iPhone?

Допустить ошибку...

пробуют метод:

std::vector<T>::reserve(x)

Это позволит Вам зарезервировать достаточно памяти для x объектов, не инициализируя никого (Ваш вектор все еще пуст). Таким образом не будет перераспределения до для осмотра x.

, вторая точка - то, что вектор не инициализирует значения для обнуления. Вы тестируете свой код в отладке?

После проверки на g ++, следующий код:

#include <iostream>
#include <vector>

struct MyStruct
{
   int m_iValue00 ;
   int m_iValue01 ;
} ;

int main()
{
   MyStruct aaa, bbb, ccc ;

   std::vector<MyStruct> aMyStruct ;

   aMyStruct.push_back(aaa) ;
   aMyStruct.push_back(bbb) ;
   aMyStruct.push_back(ccc) ;

   aMyStruct.resize(6) ; // [EDIT] double the size

   for(std::vector<MyStruct>::size_type i = 0, iMax = aMyStruct.size(); i < iMax; ++i)
   {
      std::cout << "[" << i << "] : " << aMyStruct[i].m_iValue00 << ", " << aMyStruct[0].m_iValue01 << "\n" ;
   }

   return 0 ;
}

дает следующие результаты:

[0] : 134515780, -16121856
[1] : 134554052, -16121856
[2] : 134544501, -16121856
[3] : 0, -16121856
[4] : 0, -16121856
[5] : 0, -16121856

инициализация, которую Вы видели, была, вероятно, артефактом.

[РЕДАКТИРОВАНИЕ] После комментария изменяют размеры, я изменил код для добавления изменять размеры строки. Изменение размеры эффективно называет конструктора по умолчанию объекта в векторе, но если конструктор по умолчанию ничего не делает, то ничто не инициализируется... Я все еще полагаю, что это был артефакт (мне удалось в первый раз обнулить целый вектор со следующим кодом:

aMyStruct.push_back(MyStruct()) ;
aMyStruct.push_back(MyStruct()) ;
aMyStruct.push_back(MyStruct()) ;

Так...:-/

[уже РЕДАКТИРУЮТ 2] Как предложенный Arkadiy, решение состоит в том, чтобы использовать встроенного конструктора, берущего желаемые параметры. Что-то как [1 114]

struct MyStruct
{
   MyStruct(int p_d1, int p_d2) : d1(p_d1), d2(p_d2) {}
   int d1, d2 ;
} ;

Это будет, вероятно, встроено в Вашем коде.

, Но необходимо так или иначе изучить код с профилировщиком, чтобы быть уверенными, что эта часть кода является узким местом приложения.

6
задан Chintan Patel 29 September 2009 в 14:15
поделиться

1 ответ

Да, это возможное. Для этого вам нужно использовать MKAnnotationView вместо MKPinAnnotationView. и не используйте свойство annotation.animatesDrop.

Вот пример кода, который вы можете использовать в viewForAnnotation,

    annotation = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"try"];
    annotation.canShowCallout = YES;

    annotation.image = [UIImage imageNamed:@"image.png"];


    return annotation;
14
ответ дан 8 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

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