В чем разница между этими проверками наследования? - PullRequest
4 голосов
/ 28 августа 2011

Я видел примеры кода Objective-C, которые, по-видимому, выполняют одни и те же / похожие проверки, используя разные методы. Я хочу узнать, в чем разница между ними:

isKindOfClass

isMemberOfClass

isSubclassOfClass

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

Ответы [ 2 ]

4 голосов
/ 15 июля 2014

Это оба метода экземпляра:

isKindOfClass: Является ли объект экземпляром класса или экземпляром подкласса этого класса?isMemberOfClass: Является ли объект экземпляром класса?(Не включает подклассы).

В то время как последний является методом класса (например, [NSString isSubclassOfClass:[NSObject class]]).

isSubclassOfClass: Является ли класс равным другомукласс или подкласс этого класса?

1 голос
/ 28 августа 2011

В Google так много ссылок, и, особенно, их много раз спрашивали о stackoverflow, проверьте мою добавленную ссылку в комментарии и

Разница между SDK iPhone между isKindOfClass и isMemberOfClass

Попробуйте также прочитать их документацию, это вам очень поможет.

1010 * Отредактированный *

Допустим, у вас есть имя класса External, а внутри External класса у вас есть подкласс с именем Internal. Я надеюсь, что у вас есть представление о классе, может иметь подкласс, который может получить доступ к свойствам основного класса. поэтому с помощью этого метода вы можете задать Internal класс: Являетесь ли вы подклассом внешнего класса?

[Internal isSubclassOfClass:External]

И возвращаемое значение будет BOOL

  • ДА, если получающий класс является подклассом или идентичен aClass, в противном случае НЕТ.

Более подробная информация доступна на веб-сайте документации Apple

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...