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

@OCTAGRAM:
OCTAGRAM

Эмпирически выясняю, что нужно, чтобы запустить приложения под YellowBox, по возможности не устанавливая их. Самый свежий — это WebObjects, проверяю на нём. Опытным путём установлено, что перед тем, как запускать программы, нужно запустить все 4 служебных процесса в таком порядке:
%NEXT_ROOT%\Library\System\machd.exe -d
%NEXT_ROOT%\Library\System\nmserver.exe -d
%NEXT_ROOT%\Library\System\WindowServer.exe
%NEXT_ROOT%\Library\Frameworks\AppKit.framework\Resources\pbs.exe

Причём, обычный установщик YellowBox ставит первые два как службы (также можно вручную установить ключиком -install с правами админа) с указанием зависимости, а последние два — ставит в автозагрузку каждому пользователю, отсюда и их порядок после служб. Между последними двумя порядок либо не критичен, либо они как-то ждут друг друга, тут сложно понять. Ключик -d позволяет запустить службы как обычные процессы, таким образом, не требуя прав админа.

С точки зрения возможности выбрать в качестве кроссплатформенного движка не какой-нибудь дебильный Qt, Gtk+ или ещё куда ни шло VCL, wxWidgets и иже с ними, а всё же что-нибудь, основанное на спецификации OpenStep, это фиговенький, но всё же вариант для Windows. Сдаётся мне, Cocotron-то во многом получше будет, но там инструменты разработки кросскомпилируют с Mac OS X, да ещё с каким-то движком Objective-C, будто бы отличным от всех остальных, которые можно найти в природе. Что касается GNUStep, то эти ребята, когда я прочитал, как они «сделали» ARC, у меня просто волосы дыбом встали. Они додумались Boehm GC впихнуть в движок для всех программ без разбора. Если оно там теперь так и осталось неизвлекаемое, GNUStep начиная с этого момента можно считать безнадёжно сломанным, непригодным для серьёзной разработки. Надо отследить ревизию, в которой эти умники насвинячили, игнорировать всё, что было после, а то вдруг там начали появляться программные ошибки, а я считаю циклы владения безусловно программными ошибками, нарушением причинности, и, может быть, в таком виде от GNUStep ещё будет какая-то польза.

Необходимость разрабатывать кроссплатформенно плюс плохое качество библиотек, обычно берущихся для этого, плюс проблемы с реализациями OpenStep на не-Windows платформах — всё это поспособствовало тому, что я надолго ушёл из фронтенда на сервера и никак не могу вернуться, кроме как заработков на Delphi VCL Windows. А хочется.

@OCTAGRAM:
OCTAGRAM

ARC forbids Objective-C objects in structs or unionsА Objective-C, оказывается, не так крут, как я думал. Хотя, казалось бы, какие проблемы. Везде в других местах (и в C++ тоже) такое работает.

@OCTAGRAM:
OCTAGRAM

Импортозамещение для всех
Презентация проекта «Общая платформа исполнения приложений». Скомпилируй дважды, запусти везде.

@OCTAGRAM:
OCTAGRAM

Посравнивал даты файлов AppKit.dll, если установить OPENSTEP/Enterprise 4.2.4, WebObjects 4.0.1.3, YellowBox 5.1
Раньше мне казалось, что их развитие было именно в таком порядке, ведь в WebObjects 4.0.1 вроде бы как YellowBox 1.0, a 5.1 > 1.0. Но по датам получается следующее:
OPENSTEP/Enterprise 4.2.4 (Bastion5U1) : NextLibrary\Executables\AppKit.dll 1997-03-26
YellowBox 5.1 (Pluto1W1) : Library\Executables\AppKit.dll 1998-05-05
WebObjects 4.0.1.3 (Picasso2Z) : Library\Executables\AppKit.dll 1999-02-23

И это замечательно объясняет, почему версия SokoSave, собранная для WebObjects, не пашет под YellowBox.

@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.

@OCTAGRAM:
OCTAGRAM

channel9.msdn.com
Этим летом появится SDK для разработки/портирования Objective-C приложений на Windows и Windows Phone. Visual Studio 2015 будет поддерживать Objective-C при помощи clang; в C++ будут реализованы настоящие coroutine.

Вот ещё бы поддержка SOM появилась, и вообще в самый раз.

@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

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