2009-04-28 2 views
4

Мне было интересно, возможно ли во время выполнения динамически добавлять новые объекты в экземпляр объекта Objective-C?Можете ли вы добавить свойство во время выполнения при кодировании с Objective-C

Моя первоначальная мысль просто переопределит getValueForKey для «подделки» свойства, но похоже, что это не работает с CoreAnimation. То, что я хочу достичь, - это возможность анимации пользовательских свойств. Я смог заставить это работать, если я создаю подкласс CALayer и добавляю объявленные свойства к моему подклассу. Если я попытаюсь использовать getValueForKey/setValueForKey, похоже, CoreAnimation не заботится об этом, и он явно ищет объявленные свойства.

Я хотел бы иметь возможность динамически добавлять свойства, потому что я, возможно, не знаю, какое свойство я хочу оживить до выполнения. Я, конечно, может создать подкласс CALayer, который имеет все свойства, которые я когда-нибудь нужно анимировать ... но просто интересно, если есть лучше способ сделать это ...

Спасибо,

Питер

ответ

3

Вы пробовали переопределить valueForUndefinedKey: вместо этого? (Я делаю это в пользовательском подклассе NSObject, который может иметь различные свойства, имена которых вытаскиваются из базы данных.)

1

Вы можете переопределить -respondsToSelector: и -doesNotUnderstand: для обработки входящих сообщений динамически, если это необходимо.

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