Схема именования Objective C сохранить / выпустить - PullRequest
0 голосов
/ 15 июля 2010

Я создаю оболочку Objective-C для скверной устаревшей C-библиотеки.Предположим, у меня есть два класса Objective C A и B , охватывающие некоторые связанные унаследованные структуры.Теперь я хотел бы предоставить функцию, которая преобразует данный объект класса A в объект класса B .Проблема состоит в том, что процесс преобразования разрушает внутреннее состояние исходного объекта.

Что является лучшим решением для реализации этой функции преобразования в соответствии со стандартным соглашением об именах Objective-C.Т.е. должно быть ясно, что функция преобразования сделает выпуск на данном исходном объекте.

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Вместо того, чтобы спрашивать об имени, возможно, вам следует спросить стратегии о том, как выполнить процесс преобразования, не разрушая состояние исходного объекта. Я не могу представить какие-либо данные C, которые не могут просто memcpy переместиться в новое место. Я бы поигрался с этим и посмотрел, решит ли дублирование данных перед преобразованием эту проблему для вас.

0 голосов
/ 15 июля 2010

Нет такого соглашения об именах.Все методы / функции Objective-C, которые я видел в стандартных API, либо копируют свои источники, оставляя исходный источник без изменений, либо используют исходные, но не уничтожают его.

Соглашение о присвоении имен, которое существует, сохраняется додолжен ли вызывающий объект освободить объект new .

0 голосов
/ 15 июля 2010

выпуск источника не очень хорошая идея, я считаю.Почему бы вам не сделать копию вашего источника и выпустить его (если это необходимо).В этом случае вы можете вызвать метод

MyObjectB * b = [MyObjectB bFromA: (MyObjectA *) a];

или

MyObjectB * b = [[MyObjectB alloc] initFromA: (MyObjectA *) a];

Полагаю;)

...