Передача указателя, который является частью объекта (Cocoa)

#iphone #ios #ipad #pointers

#iPhone #iOS #iPad #указатели

Вопрос:

Хорошо, у меня есть пользовательский объект (подкласс NSManagedObject, если это имеет значение), и я хочу передать указатель на один из его IVAR функции, которую я настроил для изменения таких значений. С обычным указателем вы бы просто добавили к нему префикс амперсанда (amp;), как в классическом примере NSError amp; error, но это невозможно сделать с помощью точечной записи. Я не могу просто передать amp;object.iVar, как я и надеялся. Кто-нибудь может предложить простой и элегантный способ получения указателя iVar, чтобы я мог его передать? Я не хочу передавать весь объект по соображениям структуры кода и аккуратности.

-Ash

Ответ №1:

Ага, как это почти всегда бывает, я задаю вопрос после часа разочаровывающих размышлений, а через десять минут отвечаю на него сам. Я не знаю, возможно, задавать вопросы — это своего рода терапевтический триггер для получения ответов… жаль, что это не сайт по психологии.

В любом случае, мое решение состояло в том, чтобы добавить новый метод ‘псевдопоглотителя’ к объекту, из которого я пытаюсь получить доступ к указателю, который выглядит примерно так:

 - (Pointer **)getIVarPointer
{
    return amp;iVar;
}
  

Это немного неуклюже, но поскольку у меня есть только тот iVar, указатель которого мне нужно получить, это не так уж плохо. С другой стороны, если есть более простой, «официальный» способ сделать это, я хотел бы его узнать!