2013-02-28 17 views

risposta

3

Un oggetto è qualcosa che è effettivamente incorporato nel pennino.

Un oggetto esterno è uno che il codice che carica il pennino promette di fornire al momento del caricamento (credo tramite un dizionario che mappa le chiavi su oggetti esterni).

La maggior parte delle persone non utilizza mai alcun oggetto esterno oltre al proprietario del file (che è già fornito per te). Quasi certamente vuoi solo oggetti.

+0

Si può fornire esempio quando avrei usato ciascuno? (Solo idea non codice). Grazie. – RCB

+1

@RCB: quasi tutto in un pennino è un oggetto di qualche tipo. Dovresti usare l'oggetto letterale se vuoi incorporare un oggetto di una classe che IB non conosce nel tuo pennino. Lo faresti modificando il valore della classe per il tuo nuovo oggetto. Usare direttamente un oggetto non è molto comune. Per quanto riguarda l'oggetto esterno, probabilmente non avrai mai bisogno di farlo. –

6

Aggiunta alla altra risposta: È possibile utilizzare un 'oggetto esterno' per accedere a un oggetto comune su più xib. Potresti farlo anche in altri modi, ma sarebbe conveniente.

Ad esempio, se si esegue un'azione "grande" per i clic sui pulsanti su più xib e se si dispone di molte di tali azioni (e inoltre se si tratta degli stessi dati su cui si sta eseguendo questa azione), invece di chiamando addTarget:action..., è possibile creare l'oggetto proxy di questa classe e collegarlo ai pulsanti.

È possibile collegare l'oggetto proxy per il tuo XI ter utilizzando il seguente codice:

id *proxy = <someObject>; //The object you want to wire up 
//In the below line of code use the same key as the identifier you give for the proxy object in the Interface Builder 
UINib *nib = [UINib nibWithNibName:@"ViewController" bundle:Nil]; 
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:proxyObject,@"proxy", nil]; 
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:dict,UINibExternalObjects, nil]; 
NSArray *nibArray = [nib instantiateWithOwner:self options:dict2]; 
self.view = [nibArray objectAtIndex:0]; 
Problemi correlati