2012-01-26 3 views
1

До сих пор я видел только CoreData, используя определения свойств доступа @dynamic. Какие еще существуют способы для получения свойств для динамических аксессуаров в объекте Cocoa, чтобы они могли быть помечены как @dynamic?@ доступа к динамическим свойствам в какао

ответ

0

По умолчанию все объявленные свойства являются @dynamic, однако вы можете объявить их как @synthesize. @dynamic означает, что вы обеспечиваете реализацию getter и setter в своем классе, которые могут быть связаны ни с каким i-var.

+0

Я знаю, что означает '@ dynamic'. Я хотел знать, что означает другие средства без модели CoreData для предоставления динамических аксессуаров для свойства объекта. – Eimantas

+1

не уверен, получил ваш запрос четко, но один из вариантов - это свойство фасада, которое в getter & setter будет работать с другими скрытыми свойствами. – Denis

0

Вы можете объявить динамику недвижимости самостоятельно. Это может быть полезно, если, например, методы getter и setter реализованы вашим суперклассом.

+0

. В чем смысл объявления аксессуаров в суперклассе без объявления свойства в том же классе? – Eimantas

1

Вы можете создать аксессор во время выполнения, ответив на +resolveInstanceMethod: (это то, что делают основные данные) или имитирует его с помощью -forwardInvocation:. Я видел, что это используется в макетных объектах модели, которые поддерживают произвольные (объектно-значные) свойства, хотя в этом случае свойства были объявлены в нереализованных категориях, поэтому не было использовано явное @dynamic. (На самом деле, я написал a stupid hack, что делает NSDictionary так себя вести.)

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