2012-02-20 2 views
1

Может кто-нибудь объяснить мне, как работает наследование под капотом в Objective-C?Наследование Objective-C

Допустим, у меня есть класс B, который наследует класс A. Каков клей между этими двумя кланами, чтобы класс B мог получить доступ к свойствам и методам класса A?

+1

Что означает «клей»? И вы хорошо понимаете предметную ориентацию/наследование как таковое? То есть, вы уже работали с другим объектно-ориентированным языком? – DarkDust

+0

Что касается сообщений, документы объясняют это здесь: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtHowMessagingWorks.html#//apple_ref/doc/uid/TP40008048- CH104-TPXREF134 – Monolo

ответ

2

isa.

isa определяет тип во время выполнения и ссылается на его динамический «клей» (см. vtable). Из-за isa среда выполнения знает (или может определить), какие методы выполнять при отправке сообщения, а также тип self.

При создании экземпляра назначается его isa.

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

0

Попытка понять следующий код

@interface SampleViewController : UIViewController{} 

Это указывает на то, что SampleViewController наследуется UIViewController, и вы можете получить доступ ко всем свойства/методы UIViewController.

Я согласен с тем, что Джастин сказал о динамическом «клеи».

Смежные вопросы