Sto cercando di capire il concetto di blocchi. Quello che ho letto finora sembra concettualmente simile alle funzioni anonime in JavaScript. È corretto?I blocchi Objective-C sono simili alle funzioni anonime in JavaScript?
risposta
Sì, per la parte più grande. I blocchi sono tipo- C funzioni trattate tipo-di come oggetti che possono acquisire variabili dall'ambito circostante. Le funzioni anonime sono equivalenti ai blocchi, ma certamente non identiche a causa del complicato meccanismo dei blocchi dietro le quinte.
Ad esempio, se si intende utilizzare un blocco dopo/fuori dalla funzione/metodo che definisce il blocco non è più attivo, è il caso se si imposta il blocco come proprietà da qualche parte o si utilizza in GCD (un multi -core libreria di accodamento operazione), è necessario copiarlo con Block_copy()
(o [aBlock copy]
). Non entrerò nei dettagli, ma questo non è certo qualcosa che fai con le funzioni JS (anonime). Ha a che fare con il fatto che i blocchi letterali sono allocati nello stack (e non da qualche parte nel codice) ed è necessario copiarli nell'heap se si desidera che persistano.
Può diventare piuttosto complicato (ma piuttosto bello nel suo design), ma per la maggior parte dei casi d'uso è piuttosto semplice e puoi trattarlo come funzioni JS anonime. ;-)
Sì. I blocchi in Objective-C sono chiusure.
- 1. Come vengono trasmessi i dati alle funzioni anonime in JavaScript?
- 2. Devo incapsulare blocchi di funzionalità nelle funzioni JavaScript anonime?
- 3. Passare argomenti in funzioni anonime in JavaScript
- 4. Variabili globali JavaScript e funzioni anonime autoinventi
- 5. Le funzioni con nome o le funzioni anonime sono preferite in JavaScript?
- 6. funzioni anonime considerate dannose?
- 7. Funzioni anonime Tcl
- 8. Funzioni anonime nidificate in Clojure
- 9. Funzioni PHP ricorsive anonime
- 10. variabili php in funzioni anonime
- 11. Funzioni anonime e non anonime Lua
- 12. funzioni anonime finto C
- 13. VB.NET ha funzioni anonime?
- 14. Posizione della parentesi per l'esecuzione automatica di funzioni JavaScript anonime?
- 15. Assegnazione dinamica di funzioni anonime in pascal
- 16. esecuzione di funzioni anonime create usando JavaScript eval()
- 17. Utilizzo di funzioni anonime autoinvitrici
- 18. funzioni anonime si chiamano in MATLAB
- 19. Javascript "due punti" per etichettare le funzioni anonime?
- 20. Istruzioni di ritorno Scala in funzioni anonime
- 21. Perché i blocchi sono serializzabili in java?
- 22. Le funzioni in coda JavaScript sono ottimizzate?
- 23. Le funzioni JavaScript sono asincrone?
- 24. Come concatenare alle funzioni di data javascript
- 25. Determina se due stringhe sono simili in Javascript?
- 26. ObjectiveC blocca l'equivalente Java
- 27. C'è un modo per avere tuple con campi denominati in Scala, simili alle classi anonime in C#?
- 28. Non sono anche tutti i costruttori di funzioni JavaScript?
- 29. Funzioni differenziali multiple vs anonime differite
- 30. Equivalente di uintptr_t/intptr_t per i puntatori alle funzioni?