2013-04-21 17 views
7

Sto provando a creare dinamic objc class in fase di esecuzione e devo aggiungere un po 'di Ivar alla classe creata. Ho trovato class_addIvar che dovrebbe fare quello che voglio, ma ho trovato anche queste funzioni:cosa sono class_setIvarLayout e class_getIvarLayout?

  • class_setIvarLayout
  • class_getIvarLayout
  • class_getWeakIvarLayout
  • class_setWeakIvarLayout

il doc in realtà non ha detto che qualsiasi utile informazioni su questi metodi e non riesco a trovare alcuna spiegazione utile dal web. Quindi cosa sono? Devo usarli se voglio fare qualcosa con Ivar?

risposta

8

I metodi class_*IvarLayout vengono utilizzati dal garbage collector (se/quando lo si sta usando) per determinare quali aree della memoria di un oggetto devono essere scansionate per riferimenti forti/deboli.

È improbabile che tu abbia mai bisogno di chiamare questi metodi; i layout appropriati vengono generati quando si chiama objc_registerClassPair.