Преднамеренная сильная ссылка в блоке, хорошая ли это идея?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Преднамеренная сильная ссылка в блоке, хорошая ли это идея?

Сообщение Anonymous »

Итак, у меня есть 2 представления с объектами одного и того же типа в каждом. Я использовал блок для настройки объекта в первом представлении и передаю этот блок во второе представление, когда перехожу к нему, чтобы точно такую ​​же настройку можно было выполнить для объекта во втором представлении. (в некотором контексте это карта, и я добавляю маркеры и пути на первую карту, затем перехожу к увеличенной версии карты на втором экране, которая будет иметь те же маркеры и пути)

теперь есть одна переменная, которую я хочу видеть только в первом представлении, но по-прежнему иметь эффект во втором представлении. Это будет специальный маркер, положение которого можно будет изменить по сравнению с первым представлением. (обновление GPS в фоновом режиме происходит только в первом представлении), а изменения появятся во втором представлении.

поэтому я собираюсь сделать следующее:

р>

Код: Выделить всё

@implementation WhereAmIView
{
RMMarker *iAmHere;
void (^setupMap)(RMMapView*);
}

- (void) setup {

//__block RMMarker *_iAmHere = iAmHere;

setupMap = ^(RMMapView *mapViewBlock){
if(!iAmHere)
iAmHere = [[RMMarker alloc]initWithUIImage:[UIImage imageNamed:@"marker-red.png"] anchorPoint:CGPointMake(0.5, 1.0)];

//there is a bunch of other stuff i have omitted here, but the important bit is above this comment
[iAmHere setTextForegroundColor:[UIColor blueColor]];
[iAmHere changeLabelUsingText:@"You are Here"];
[markerManager addMarker:iAmHere AtLatLong:appDelegate.currentLocation.coordinate]; //dont worry about this stuff, just put it here to show that stuff is happening
}

setupMap(mapView);
}

- (IBAction)enlargeMap:(id)sender {

MainViewController *mainViewController = (MainViewController*)[self viewController];
FullScreenMapViewController *fsmvc = [[FullScreenMapViewController alloc] initWithCenter:CLLocationCoordinate2DMake(0, 0) andMap:@"tokai2.db"];
fsmvc->setupMap = setupMap; //this gets run in its viewDidAppear effectively
[mainViewController presentModalViewController:fsmvc animated:true];
}
безопасно ли мне использовать iAmHere таким образом, поскольку этот блок будет существовать только в этом представлении и следующем, поэтому технически сохранять циклы не будет иметь значение? если я использую закомментированный в коде _iAmHere вместо iAmHere в блоке, изменится на iAmHere в первом представлении, внесу изменения в _iAmHere в второй вид? возможно, вообще невозможно добавить один и тот же маркер в оба вида карты, но теоретически это сработает?

или, может быть, есть лучший способ сделать это полностью ...

Подробнее здесь: https://stackoverflow.com/questions/158 ... -good-idea
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Хорошая ли идея использовать std::initializer_list в полиморфном классе?
    Гость » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Гость
  • В Swift, если это хорошая идея, обрабатывать ошибки в моем коде при выпуске определенного слабо захваченного свойства с
    Гость » » в форуме IOS
    0 Ответы
    55 Просмотры
    Последнее сообщение Гость
  • Хорошая ли идея использовать Kafka для операций обновления и вставки в Java-проект?
    Anonymous » » в форуме JAVA
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Защита выхода из области C++11, хорошая идея?
    Anonymous » » в форуме C++
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Хорошая ли идея использовать длинный хэш-код в качестве первичного ключа в базе данных?
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»