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

Надеюсь, что это поможет

blockquote>

Mail::failures() вернет массив неудачных писем.

Mail::send(...)

if( count(Mail::failures()) > 0 ) {

   echo "There was one or more failures. They were: 
"; foreach(Mail::failures() as $email_address) { echo " - $email_address
"; } } else { echo "No errors, all sent successfully!"; }

source: http: / /laravel.io/forum/08-08-2014-how-to-know-if-e-mail-was-sent

17
задан dbr 20 August 2013 в 12:56
поделиться

9 ответов

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

то, Что said†¦

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

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

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

21
ответ дан 30 November 2019 в 09:57
поделиться

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

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

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

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

7
ответ дан 30 November 2019 в 09:57
поделиться

Я наткнулся через хорошее учебное руководство на PyObjC/Cocoa:

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

7
ответ дан 30 November 2019 в 09:57
поделиться

Быть тупым:

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

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

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

21
ответ дан 30 November 2019 в 09:57
поделиться

Все, что я хочу сделать, создают довольно простые приложения Python с Какао GUI.. Может любой проливать свет на ужасную документацию или указывать на меня на некоторые учебные руководства, которые только дают Вам огромные блоки кода и предполагают, что Вы знаете то, что делает NSThread.detachNewThreadSelector_toTarget_withObject _ ("queryController", сам, Ни один)..?

[...]

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

, Хотя я в основном соглашаюсь с ответом Soeren, я использовал бы его еще больше:

Это будет долгое время, если когда-либо, прежде чем можно будет использовать Какао без некоторого понимания 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 в памяти. Я не утверждаю, что невозможно перевести интерфейс в функции Cocoa в форму, более естественную для других языков. Это просто, что, как только Вы изменяете платформу Какао, чтобы прекратить относиться к "селекторам", это больше не действительно платформа Какао. Это - переведенная версия. И после того как Вы начинаете идти по той дороге, я предполагаю, что вещи становятся действительно грязными. Вы пытаетесь не отставать от Apple, поскольку они обновляют Какао, возможно, Вы поражаете некоторые части Какао, которые просто не переводят хорошо на новый язык, безотносительно. Таким образом вместо этого, вещи как PyObjC решили выставить Какао непосредственно, способом который имеет очень четкую и простую корреляцию. Поскольку они говорят в документации:

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

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

5
ответ дан 30 November 2019 в 09:57
поделиться

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

@PyObjcTools.AppHelper.endSheetMethod
def alertEnded_code_context_(self, alert, choice, context):
    pass
4
ответ дан 30 November 2019 в 09:57
поделиться

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

3
ответ дан 30 November 2019 в 09:57
поделиться

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

3
ответ дан 30 November 2019 в 09:57
поделиться

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

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

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

29
ответ дан 30 November 2019 в 09:57
поделиться