понедельник, 21 октября 2013 г.

Offtopic. EVD-текст и CoreText - "близнецы братья"

Offtopic. EVD-текст и CoreText - "близнецы братья".

EVDPara == NSAttributedString (CFAttributedString)
EVDFormattingInfo == CTFrame (CTCreateFrame)
EVDPainter == CTDrawFrame
EVDObjectSegment == GlyphRunnerDelegate

Когда я начал программировать CoreText и разобрался с ним - я понял, что "попал в привычную среду". Все понятия - "крайне похожи", с точностью до названий и "запятых".

Правда есть ещё:
EVDTable == ?
EVDTableRow == ?
EVDTableCell == ?

- ИХ пришлось "писать руками". На основе всё того же CoreText. Но с учётом на  упрощение "объединения и выравнивания ячеек по вертикали", а также на "сложные рамки ячеек" - это не составило большого труда.

И я горжусь тем, что "изобрёл" что-то "похожее" на то, что Apple "двигает" как "промышленный стандарт.

Хотя.. "Всё описано в GoF".

-----------------------------------------------------

А ещё - "подсчёт ссылок" в Cocoa - КРАЙНЕ похож на "мой" подсчёт ссылок (http://18delphi.blogspot.ru/2013/04/iunknown.html). За исключением того, что "я НЕ придумал" autoreleasepool и autorelease.

И "то странно" - "мой"подсчёт ссылок - БОЛЬШЕ похож на подсчёт ссылок КАК РАЗ Apple, а не Borland.

Там есть ОДНА ТОНКОСТЬ. НО она - "дорогого стоит". Что "у меня", что у Apple - "конструктор" возвращает объект со счётчиком ссылок РАВНЫМ +1. В то время как у Borland'а - РАВНЫМ 0.

"У меня" и у Apple - счётчик ссылок взводится в КОНСТРУКТОРЕ и в retain. В то время как у Borland - "в момент присваивания переменной".

Мелочь. Но из этой мелочи - "многое растёт".

В частности проблема const/не const параметров, описанная Gunsmoker'ом.

Очень жаль, что Embarcadero со своим ARC "идёт путём Borland'а".

И ведь мне придётся "свой подсчёт ссылок" трансформировать под "мейнстрим". Если вдруг возникнет необходимость писать на Delphi под "мобильные устройства".

Комментариев нет:

Отправить комментарий