Запутался насчет NSCFTimer ... что это? - PullRequest
1 голос
/ 05 июля 2010

Может кто-нибудь сказать мне, что такое NSCFTimer? Я понимаю, когда спрашиваю у NSTimer таймер. Моя проблема в том, что я пытаюсь проверить, является ли объект (предположительно NSTimer, обратите внимание на слово «предположительно», именно поэтому я проверяю) объектом класса NSTimer, он не работает. Этот "NSCFTimer" каким-либо образом ... мешает процессу?

Ответы [ 2 ]

7 голосов
/ 05 июля 2010

NSCFTimer - это деталь реализации сред Foundation и CoreFoundation. Это подкласс NSTimer, и, таким образом, isKindOfClass: будет отлично работать.

Однако возникает вопрос, почему у вас может быть ссылка на объект, который может быть или не быть Таймером. Единственными источниками таймеров являются либо ваше создание, либо четко определенные методы в рамках. Таким образом, такая неопределенность является нетипичной и часто указывает на основную проблему проектирования.

4 голосов
/ 06 июля 2010

bbum выразился бы довольно хорошо, но, чтобы быть более грубым: насколько вам нужно знать, NSCFTimer - это то же самое, что и NSTimer, и вам не нужно об этом беспокоиться. :)

Техническая причина: NSTimer является бесплатной связью с CFRunLoopTimer. Когда вы создаете экземпляр NSTimer, код в этом классе заменяет ваш экземпляр экземпляром непрозрачного базового типа C типа C CFRunLoopTimer. CFRunLoopTimer идентифицирует себя во время выполнения Objective C как экземпляр класса NSCFTimer, поэтому класс экземпляра NSTimer будет сообщаться как NSCFTimer.

Для получения дополнительной информации о бесплатном мостовом соединении, Core Foundation и о том, как часто вы используете оба, даже не зная об этом, см. Документация Apple .

...