Обсуждение:Objective-C

message: Это что, копи-паст в тупую с http://steps3d.narod.ru/tutorials/objective-c-tutorial.html ?
Это собственно мой тек5ст, изначально мню и выложженный
replies: text: похоже что да. вместе с ошибками 8)
----
В отличии от языка С++ (в котором несмотря на то, что всем известно, что метод — это просто функция с дополнительным параметром this, нет никакого официально документированного способа получить указатель на эту функцию) в языке Objective-C можно по селектору метода получить адрес реализующей его функции (именно как функции языка С).
Есть
class A
{
   void func(){}
};
..
void (A::*f)()=&A::func; //адрес функции
A a,b;
//Вызовы
a.*f();
b.*f();
Это не ошибка - укащзатель на метод это не указатель на функцию. В С++ Вы никогда не получите адрес метода именно как функцию (кроме хаков)
Тем более, если функция виртуальная, то по стандарту оператор ->* должен вызвать приавльный метод, т.е. обратится к VMT.
Фактически для MS VC в случае виртуклной функции указатель на метод, это offset в VMT
А для objective-C я получаю именно функцию, и разрешение виртуальности просиходит именно в момент получения адреса функции.

text: Стоит заметить, что язык Objective-C активно применялся для построения пользовательского интерфейса и библиотеки классов для операционной системы NextStep, в то время, когда эта система работала на компьютерах с 25-Мгц процессорами Motorola 68030. Если даже на таком процессоре язык обеспечивал приемлимое быстродействие, то сейчас о нём можно практически не думать.
Очень спорно. Вместе с возможностями железа выросли и потребности программного обеспечения к ресурсам этого самого железа. plashchynski 17:35, 9 августа 2008 (UTC)
Objective-C использует гибридную типизацию: C-типы - статическую, объекты - динамическую. В английской википедии у C и Objective-C указана нестрогая типизация, и это так.  212.44.130.15 19:31, 17 мая 2010 (UTC)
thread_title: Untitled

message: «При помощи директивы @synchronized () можно защитить фрагмент кода от одновременного выполнения сразу несколькими потоками.»
Здесь и далее по тексту раздела Objective C#Синхронизация упоминания о защищаемом фрагменте кода некорректны. Ведь в случае конкуренции любых участков кода, синхронизированных по одному и тому же объекту, они будут выполняться поочередно...
Короче, RTFM: 
Сейчас я на работе и у меня нет времени на правку, если у вас время есть - внесите соответствующие изменения. Не нужно обманывать народ :) werediver 09:43, 1 апреля 2011 (UTC)
thread_title:  Синхронизация 

message: В последних версиях LLVM от Apple появился автоматический подсчет ссылок (ARC), который позволяет забыть о memory management. Не нужно отправлять каждому объекту dealloc, release и retain, ARC при компиляции делает все за программиста. Это снижает порог вхождения в язык. 2.132.30.233 08:04, 30 ноября 2012 (UTC)
thread_title:  Добавьте ARC 

message: Получившийся в результате язык Objective-C оказался крайне прост — его освоение у С-программиста займет всего несколько дней.
Экспрессивное, ничем не подтвержденное утверждение. Помимо необходимости освоения Объектно-ориентированного подхода (если C-программист до этого имел опыт только со структурным программированием), сложности также вызывает необычный синтаксис для C-подобных языков.
Он является именно расширением языка С — в язык С просто добавлены новые возможности для объектно-ориентированного программирования. При этом любая программа на С является программой и на Objective-C.
Нужно сформулировать по-другому, т.к. данный вариант:
- во-первых корявый - "новые возможности для объектно-ориентированного программирования", "При этом" (т.е. он одновременно и расширение С и в тоже время может компилировать код на C - потрясающе).
- во-вторых вызывает вопрос (может и надуманный но все равно) - если он всего лишь расширение языка С с новыми возможностями, то сможет ли обычный компилятор C скомпилировать код написанный Objective C?
Предлагаю другой вариант:
Получившийся в результате Objective-C оказался простым и лаконичным. Приняв за основную парадигму программирования объектно-ориентированный подход и привнеся в C необходимый новый синтаксис, он в то же время сохранил полную совместимость с предком. Objective-C является надмножеством языка C, т.е. валидный код на языке C также будет валиден и для Objective-C (для C++ это не всегда так).
 95.79.49.192 17:08, 27 марта 2013 (UTC)
thread_title:  История 

message: Укажите, что assign - атрибут по умолчанию.
weak - не аналог assign для ARC. weak-ссылки ОБНУЛЯЮТСЯ после освобождения памяти объекта и это важно. 
unsafe_unretained аналог assign для ARC. 
Далее, если говорить об атрибутах - как же nonatomic. 
Вообще, стоит свериться внимательно с литературой(например с Кочаном)- в статье присутствуют неточности.
 178.158.130.41 20:44, 21 апреля 2013 (UTC)soxjke
thread_title:  Синтаксис языка: свойства