2012-01-16 9 views

risposta

7

NSZone è obsoleto ora, ma di nuovo nei giorni NEXTSTEP, NSZone è stato un tentativo di portare il concetto di "zone malloc" in Cocoa. Ecco alcuni documenti che descrivono come funzionava quando era abilitato: http://www.cocoadev.com/index.pl?NSZone

+0

quindi, come è diverso specificare 'zone' come' NULL' e 'Default'? –

+3

Ho appena cercato il libro e cito su Google. Penso che la ragione per cui usano '-allocWithZone:' in questo caso è che il loro schema di singleton ha già annullato '-alloc', e volevano un modo semplice per evitare il loro override' -alloc'. '-allocWithZone:' schiva l'override (dato che non ha mai scavalcato quel metodo) ma non cambia alcun comportamento rispetto a un normale '-alloc' perché le zone sono obsolete e non fanno nulla. Fondamentalmente, questo è un trucco per evitare il proprio override di '-alloc' in un modo semplice, e la parte di zona è irrilevante. – StilesCrisis

+0

grazie a @StilesCrisis per la spiegazione; quindi, possiamo mettere in relazione 'Zone' come un pool 'autorelease' (senza funzionalità di autorelease)? –