Чтобы добавлять сообщения и комментарии, .

@OCTAGRAM:
OCTAGRAM

A look under ARC's hood — Episode 1
A look under ARC's hood — Episode 2
A look under ARC’s hood — Episode 3
A look under ARC's hood — Episode 4
How does objc_retainAutoreleasedReturnValue work?
Objective-C Automatic Reference Counting (ARC)
ARC in RemObjects

Оставлю здесь на почитать в будущем. Сходу всё осмыслить не получилось, понятно только, что тут что-то явно позабористее, чем в COM.

@OCTAGRAM:
OCTAGRAM

J. Hamilton. A model for implementing an object-oriented design without language extensions
Почитал. Выходит, селекторы должны указывать на смещение внутри таблицы виртуальных методов, а эти таблицы в общем случае должны предусматривать селекторы вообще для любого метода любого класса, а то, что на самом деле там их меньше, — это оптимизация. Этот доклад ссылается на объектные модели Smalltalk и Objective-C, в которых одиночное наследование, при этом ссылка на этот доклад найдена в книге «Programming with DirectToSOM C++», где модель однозначно поддерживает множественное наследование. Однако, в принципе, понятно, как применить одно к другому. В случае Smalltalk и Objective-C объектная модель плоская, допускающая коллизии между селекторами никак не связанных между собой классов, и именно разруливанию этих ситуаций посвящён доклад. А в SOM одноимённые методы классов так конфликтовать не могут, поскольку жетоны методов функционально эквивалентны кортежу из ссылки на класс-объект и имени метода. Однако конфликт возникает в другом месте, если мы пытаемся сделать у каждого класса таблицу виртуальных методов с поиском по индексу. Любое множественное наследование приводит к тому, что на один и тот же слот в таблице виртуальных методов начинают претендовать не подозревавшие о существовании друг друга классы, у которых появился общий потомок. В этом случае можно таблицы виртуальных методов родительских классов раздвинуть так, чтобы потомки не могли конфликтовать, и уже без проблем произвести таблицу виртуальных методов наследника. Приходится попариться при создании классов, зато потом всё летает. Хотя я ещё не исследовал перемычки SOM и не знаю, как оно там было на самом деле.

@OCTAGRAM:
OCTAGRAM

Я как–то проводил инвентаризацию, как бы теоретически можно было писать под Cocoa для Windows:
1. Реализация Cocoa берётся из iTunesInstaller.exe
2. Компилятор либо LLVM, либо LLVM в роли ObjC => C транслятора, затем другим транслятором
3. Оставались только заголовочные файлы, которые, наверное, надо брать из XCode, вот только какой версии, не очень было понятно. Учитывая, как реализована совместимость на уровне машинных кодов в Objective-C, в принципе, можно брать самую новую и просто не использовать слишком новые методы.
Нашёл время провести более детальный анализ того, что же именно содержит Apple Application Support. Во–первых, собственно Objective-C портированных библиотеки там 2: Foundation.dll и CoreFoundation.dll. В закрытых версиях Apple есть несколько типов CoreFoundation, которые без конвертации можно привести к указателю на Objective-C (toll-free bridging). Похоже, что это оно. Если поставить iCloud, там ещё можно отрыть AOSKit.dll, экспортирующий какие–то Objective-C классы. Никаких AppKit нет.
Что касается версии, я немного позанимался дихотомией и пришёл к выводу, что Apple Application Support из iTunes примерно соответствует версиям Lion/Mountain Leopard. Если скачать с сайта ADC xcode462_cltools_10_76938260a.dmg, он же Command Line Tools (OS X Lion) for Xcode — April 2013.dmg, достать оттуда 7-zip'ом Foundation.h и взять этот же файл из command_line_tools_for_osx_mountain_lion_april_2014.dmg, то видно, что, например, добавился #import <Foundation/NSHashTable.h>, и я вижу OBJC_CLASS_$_NSHashTable в Foundation.dll, и для некоторых других новых классов тоже, но не всех. А из Maverick (commandlinetoolsosx10.9forxcode6.2.dmg) я ничего добавленного уже не вижу.
Все остальные библиотеки реализованы более менее без Objective-C. Несколько библиотек, вижу, импортируют несколько вызовов objc.dll, но, похоже, только лишь для того, чтобы поработать с blocks и libdispatch.dll.
Таким образом, реально из iTunes можно взять:
1. Коллекции и связанные с ними Property List сериализаторы
2. Quartz (CoreGraphics), которым, в частности, можно рисовать текст нормально, как на Mac OS X, без радужного замыливания
3. «Официальный» порт libdispatch
Может, ещё какие не–Objective-C библиотеки, коих там куча.
AppKit, видимо, только через GNUStep, Cocotron или YellowBox. Свои интерфейсы Safari и iTunes, видимо, как–то через C'шные библиотеки отрисовывают поверх C'шного Quartz.

В отсутствие AppKit самое интересное (для меня) остаётся в libdispatch. И libdispatch, и libuv решают похожие задачи, но кто из них лучше? У libdispatch на Windows, кроме «официального» порта есть два неофициальных, и неплохо бы было, чтобы кто–нибудь посравнивал их между собой на предмет проблемы C10k.

@n3lab:
n3lab

кто-нить юзал assets library? почему там enumerateGroupsWithTypes и нотификация на изменение так дико долго обрабатывается и как это убыстрить?

@hohoho:
hohoho

жуйк, посоветуй годную библиотеку для http. NSURLConnection не совсем подходит, ASIHttpRequest не поддерживает ARC и заброшен, AFNetwork пока не щупал но вроде неплоха.
Если имеете позитивный опыт использования чего-то ещё — поделитесь?
Рецоменд, кому не жалко.

@folex:
folex

Заебись. Давайте сделаем "динамический" язык с message-passing вызовом методов, сделаем там удобный интерфейс для message forwarding, сделаем там 3 (или больше) способа отправить сообщение объекту, а для самого широко-используемого метода сделаем compile-time type check.
Потому что ХУЙ ВАМ, а не прозрачные прокси-объекты, вот почему. Говно.

@n3lab:
n3lab

*coding клиентос предлагает хранить загружаемый контент (зип архив) для приложения в дропбоксе или на гуглдиске. я ни тем, ни тем сервисом не пользуюсь. это он с ума сошел и надо на нормальный сервер данные положить или его вариант крут и офигенен?

@n3lab:
n3lab

*coding вопрос номер один: есть приложение, у него есть удаленный контент на сервере (много разных картинок в куче разных директорий и пару xml), который надо закачать на айфон по запросу. как лучше организовать скачку? если парсить хмл и потом вытягивать по картинке в цикле — это же долго будет скачиваться. Можно все запихать в sql файл и скачать его, но хранить кучу изображений в sql — это плохо, как я понял. В общем вопрос: как бы ты сделал загрузку дополнительного контента в приложение?

@borunov:
borunov

реквестируются специалисты по ObjC на iOS. хочется попробовать написать жуйкоклиент для iPhone. message line реализую через UITableView. соответственно каждое сообщение это UITableViewCell. хочется в сообщении указать и аватар автора сообщения и теги и (внезапно) само сообщение. при этом хочется что бы при нажатии на теги и на никнэйм происходили некоторые разные действия. вопрос в том как реализовать отображение тегиов и имени автора. кнопками? слепить в ячейке еще одну таблицу? как на ваш взгляд лучше? хочется сделать так что бы скролл был быстрым, потому и советуюсь. спасибо

@borunov:
borunov

умилило на сайте фреймворка Nimbus раздел "Three20 Migration Guide" — для тех кто решил сбежать от коллег по цеху

@borunov:
borunov

запутался с NSPanel ;( в windowDidLoad устанавливаю панели кучу свойств (NSTextViev и тд) когда вызываю ее из меню то запускается пустая белая панель, как в Interface Builder, но стоит навести на нее мышь, она тут же прорисовывает все что ранее я ей наустанавливал. вопрос — как не возя мышой сразу получить отображение назначенных свойств?

@borunov:
borunov

и снова прошу помощи зала. MacOS X. Cocoa. Document-based application. унаследовал NSApplication что бы переписать обработчик событий sendEvent:
вопрос: как, находясь в экземпляре класса MyApp (наследника NSApplication) обратиться к экземпляру (экземплярам) класса Document (наследника NSDocument)?
спасибо.

@borunov:
borunov

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

@hohoho:
hohoho

посоны, кто-нибудь знает, есть ли в природе хорошие центры где можно научиться кодить под мак. чтоб по русски и растусовали хотя бы для начала в общих чертах что к чему?
хочу для общего развития подучиться, а то с книжками как то туговато — все время отвлекаюсь.
рецоменд, плиз, если не жалко

@folex:
folex

Блядь, какое же обжектив си ГОВНО.