Почему документация PyObjC так плоха? [закрыто]

Например, http://developer.apple.com/cocoa/pyobjc.html по-прежнему предназначен для OS X 10.4 Tiger, а не 10.5 Leopard. И это официальная документация Apple для этого ..

Официальная страница PyObjC одинаково плоха, http://pyobjc.sourceforge.net/

Это так плохо, это сбивает с толку ... Я рассматриваю изучение Ruby прежде всего потому, что материал RubyCocoa намного лучше задокументирован, и есть много приличных учебных пособий ( например, http://www.rubycocoa.com/ ), а также из-за обуви. GUI инструментарий ..

Даже этот плохо переведенный японский учебник более полезен, чем остальная часть документации, которую я смог найти.

Все, что я хочу сделать, - это создавать довольно простые приложения Python с графическим интерфейсом Какао.
Может кто-нибудь пролить свет на ужасную документацию или указать мне на некоторые учебные пособия, которые не просто дают вам огромные блоки кода и предполагают, что вы знаете, что NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)делает .. ?

18.08.2008 10:23:22
Первое учебное пособие по PyObjC, на которое вы ссылаетесь, - это статья Джонатана Рентша (вы можете услышать его голос в видео, и вы можете узнать его по видео C4). Несмотря на то, что он находится на сайте Apple без подписи, это не «документация Apple» в том смысле, что она написана и поддерживается Apple.
Peter Hosey 29.12.2008 02:35:53
9 ОТВЕТОВ
РЕШЕНИЕ

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

Это сказал ...

в основном все, что я хочу сделать, это писать приложения Какао, не изучая ObjC.

Боюсь , что до поры до времени, вы будете нуждаться в основное схватывании ObjC для того , чтобы извлечь выгоду из любого языка , который использует какао. PyObjC, RubyCocoa, Nu и другие в лучшем случае ниши, и все они были разработаны людьми, хорошо знакомыми с тонкостями ObjC и Cocoa.

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

21
18.08.2008 12:18:52

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

3
18.08.2008 10:27:20

Том говорит все это действительно. У многих проектов с открытым исходным кодом есть преданные разработчики и немногие, кто интересуется документированием. Не помогает тот факт, что стойка ворот может меняться ежедневно, что означает, что документация не только должна создаваться, но и поддерживаться.

3
18.08.2008 10:41:41

Ответ Тома и Мартина определенно правдив (практически в любом проекте с открытым исходным кодом вы обнаружите, что большинство участников особенно заинтересованы в разработке, а не столько в смежных вопросах, как документация), но я не думаю, что ваш конкретный вопрос в конце вполне уместился бы в документации PyObjC.

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)

NSThreadявляется частью API-интерфейса Cocoa и, как таковое, документировано в Apple , включая конкретный метод + detachNewThreadSelector:toTarget:withObject:(я бы связал там, но, очевидно, в stackoverflow есть ошибки при его анализе). В вики CocoaDev также есть статья .

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

7
18.08.2008 11:38:51

Я наткнулся на хороший учебник по PyObjC / Какао:

http://lethain.com/entry/2008/aug/22/an-epic-introduction-to-pyobjc-and-cocoa/

7
10.10.2008 10:13:01

Все, что я хочу сделать, это создать довольно простые приложения Python с графическим интерфейсом Какао. Может кто-нибудь пролить свет на ужасную документацию или указать мне на некоторые учебные пособия, которые не просто дают вам огромные блоки кода и предполагают, что вы знаете, что такое NSThread.detachNewThreadSelector_toTarget_withObject_ ("queryController", self, None) делает ..?

[...]

в основном все, что я хочу сделать, это писать приложения Какао, не изучая ObjC.

Хотя я в основном согласен с ответом Соерена, я бы пошел еще дальше:

Пройдет много времени, если вообще когда-нибудь, вы сможете использовать Какао без некоторого понимания Objective C. Какао не является абстракцией, построенной независимо от Objective C, оно явно привязано к ней. Вы можете увидеть это в приведенной выше строке кода:

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) 

Это Python способ написания строки Objective C:

[NSThread detachNewThreadSelector:@selector(queryController:) toTarget:self withObject:nil];

Теперь важно отметить, что эту строку можно рассматривать двумя способами: (1) как строку Objective C или (2) как вызов каркасов Какао. Мы видим это как (1) по синтаксису. Мы рассматриваем это как (2), признавая, что NSThread является платформой Какао, которая предоставляет набор удобных функций. В этом случае, эта конкретная среда Какао облегчает нам запуск объекта в новом потоке.

Но самое главное: платформа Какао (NSThread) предоставляет нам эту удобную услугу способом, явно привязанным к языку, на котором написана среда. А именно, NSThread дал нам функцию, которая явно ссылается на «селекторы» , Фактически, селекторы - это название чего-то фундаментального о том, как работает Objective C.

Так что есть загвоздка. Какао по сути является созданием Objective C, и его создатели создали его с учетом Objective C. Я не утверждаю, что невозможно перевести интерфейс к функциям Какао в форму, более естественную для других языков. Просто, как только вы измените каркас Какао, чтобы перестать ссылаться на «селекторы», это уже не каркас Какао. Это переведенная версия. И как только вы начнете идти по этому пути, я предполагаю, что все становится действительно грязным. Вы пытаетесь не отставать от Apple, когда они обновляют Какао, может быть, вы попадаете в некоторые части Какао, которые просто плохо переводятся на новый язык, в любом случае. Поэтому вместо этого такие вещи, как PyObjC, выбирают непосредственное раскрытие Какао, что дает очень четкую и простую корреляцию. Как говорится в документации:

Для того, чтобы иметь без потерь и однозначный перевод между сообщениями Objective C и методами Python, эквивалент имени метода Python - просто селектор с двоеточиями, замененными подчеркиваниями.

Конечно, это немного уродливо, и это означает, что вам нужно что-то знать об Objective-C, но это потому, что альтернатива, если она действительно существует, не обязательно лучше.

5
23.09.2008 14:24:46

Чтобы быть тупым:

Если вы хотите быть эффективным программистом Какао, вы должны изучить Objective-C. Конец истории.

Ни Python, ни Ruby не могут заменить Objective-C через соответствующие мосты. Вы все еще должны понимать API Objective-C, поведение, присущее классам, производным от NSObject, и многие другие детали Cocoa.

PyObjC и RubyCocoa - отличный способ получить доступ к функциональности Python или Ruby из приложения Какао, включая создание приложения Какао главным образом - если не полностью - в Python или Ruby. Но успех в этом основан на глубоком понимании Какао и API Objective-C, из которых он состоит.

21
25.10.2008 21:07:47

Я ничего не знал о Objective C или Cocoa (но много о Python), но сейчас я пишу довольно сложное приложение на PyObjc. Как я учился? Я взял Cocoa Programming для OSX и прошел всю книгу (довольно быстрый процесс), используя PyObjC. Просто игнорируйте что-нибудь об управлении памятью, и у вас все будет хорошо. Единственное предостережение в том, что очень редко вы должны использовать декоратор, такой как endSheetMethod (на самом деле я думаю, что это единственный, который я выбрал):

@PyObjcTools.AppHelper.endSheetMethod
def alertEnded_code_context_(self, alert, choice, context):
    pass
4
28.12.2008 23:05:57

Основной причиной отсутствия документации для PyObjC является то, что есть один разработчик (я), и, как и большинство разработчиков, мне не особенно нравится писать документацию. Поскольку PyObjC для меня является побочным проектом, я стараюсь сосредоточиться на работе над функциями и исправлениями ошибок, потому что это более интересно для меня.

Лучший способ улучшить документацию - добровольно помочь в списке рассылки pyobjc-dev.

Кроме того: список рассылки pythonmac-sig (см. Google) является отличным ресурсом для получения помощи по Python для MacOSX (не только для PyObjC).

29
24.05.2009 08:08:52