Мини вопросы и ответы по OBJECTIVE-C

02.07.2013

Мини вопросы и ответы по OBJECTIVE-C

  • От чего пошел язык Objective-c?

OBJECTIVE-C это надмножество языка С основанное на модели обьектно ориентированного языка Smalltalk.

  • В чем разница между NSString и просто String? (Что значит приставка NS в общем?)

Приставка NS это абревиатура от NextStep операционной системы на основе которой и создана часть MAC OS. Apple в свое время купил и использует до сих пор.

  • MVC — Model — View -Controller

Шаблон проектирования ПО в котором программа делится на три элемента: модель данных (model), пользовательский интерфейс (view) и управляющую логику (controller).

MVC - Model - View -Controller

  • RunLoop и жизненный цикл UIViewController

RunLoop или жизненный цикл программы и идеология сопровождения процессов от запуска до их окончания или мультипоточности — это я вам скажу вещь такая… в инете почти ничего нет кроме хелпа от Эппл. Да и фиг с ним.

Из полезного что нашел это возможные состояния программы

  • Not running (не запущенное) — приложение не было запущено или его работа была прекращена
  • Inactive (неактивное) — приложение работает, но не принимает события (например, когда пользователь заблокировал телефон при запущенном приложении)
  • Active (активное) — нормальное состояние приложения при его работе
  • Background (фоновое) — приложение больше не на дисплее, но оно все еще выполняет код
  • Suspended (приостановленное) — приложение занимает память, но не выполняет код

Нашел тут

И еще картинка полезная

UIApplication Delegate Messaging (1)

Жизненный цикл UIViewController замечательно расписан тут .

  • Опишите иерархию классов от UIButton до NSObject

UIButton наследуется от UIControl, UIControl наследуется от UIView, UIView наследуется от UIResponder, UIResponder наследуется от корневого класса NSObject

  • UITableViewController как с ним работать какие методы в нем есть,

Все полезное можно найти тут. А вообще это представление табличной формы, оно наследуется от uiView и умеет рабоать с таблицами.

  • чем отличаются Bounds и Frame,

frame – это прямоугольник описываемый положением location(x, y) и размерами size (width, height) вьюхи относительно ее superview в которой оа содержится. bounds – это прямоугольник описываемый положением location(x, y) и размерами size (width, height) вьюхи относительно ее собственной систмы координат (0, 0).

  • чем объект Objective-c отличается от структуры С, что такое структура в С.

Структура – специальный тип данных языка C, который содержит в себе другие типы данных в одном блоке и группрует их под одним именем. Объекты в Obj-c представляют собой структуры в которых имеется ссылка на объект класса.

  • рассказать об атрибутах @property в частности про nonatomic

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

У @property есть атрибуты, их три, например — nonatomic,readwrite,strong. Первый nonatomic или  atomic используется в мультипоточном программировании. Не рекомендуется использовать atomic если не знаете что это такое.

readwrite, readonly — первый позволяет образаться к свойству и через сеттер и через геттер, а вот второй создает только геттер

третий тип это описание работы с памятью, сильная или слабая ссылка будет (strong — weak)

  • NSCoding, archiving

Протокол NSCoding позволяет реализовать архивирование или разархивирование данных. Например у нас есть обьект мы его можем сохранить, а при следующей загрузке приложения подгрузить обратно

  • что такое View (представление) и что такое window?

View или  представление это то что отображается на экране устройства в программе. Window это некий контейнер в котором отображаются вью.

  • Что такое контекст (context)?

Контекст это область рисования для CoreGraphics

  • Что такое notifications (уведомления)? как мы должны их использовать?

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

  • Что такое memory warning (предупреждение о малом количестве памяти), как мы должны их обрабатывать?

Если на устройстве заканчивается память в центр уведомлений приходит сообщение UIApplicationDidReceiveMemoryWarningNotification, наш обьект может об этом узнать через уведомления и что-либо сделать, например почистить кеш или сохранить данные

  • Что такое делегат? как его создать и использовать?

Делегирование очень широко используемый паттерн разработки в objective-c, его суть в том, что объект, который делегирует, отдает ответсвенность за выполнение какого-то задания делегату (объекту-помошнику). Ранее я уже писал про пример с навигацией. Обьект отвечающий за навигацию отдает своему делегату право решать сто делать с данными которые он ему будет исправно отправлять. вообще делегирование в Objective-C встречается на каждом шагу

  • методы доступа, геттер и сеттер

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

  • Виды нотации

В objective используется две нотации, классическая точечная когда методы и переменные вызываются у обьекта через точку (например obj.var=1). Другая нотация скобочная, как я ее называю, подразумевает как раз более ООП вид. все что в квадратных скобках это обьект и посылаемое ему сообщение,к примеру выше, это относится так [obj setVar:1]

Один комментарий

  • Tank 21.07.2016 в 7:30 дп

    Спасибо большое освежил и расширил )

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *