Curso de Iniciación a la Programación del iPhone SDK con Objective-C Moncada, 9 de Julio de 2010 Memory Management.

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
2. Manejo de memoria Manejo de memoria estática
Programación orientada a objetos en Visual Basic .NET
Métodos y parámetros.
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA la storia la historia lhistoire the history strada calle rue street.
Paso 1 Portada YO SOY EUROPEO Comisión Europea.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO Resumen. 24 de Junio de 2005.
Cuestiones y problemas
Curso de java básico (scjp)
Curso de java básico (scjp)
Hola, Maria. Hola, Juan. Vamos a contar.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA
Funciones Continuas. Contenidos Definición de Continuidad Funciones Discontinuas Teoremas Ejemplos.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Curso de Iniciación a la Programación del iPhone SDK con Objective-C
Proyecto ProMéxico Plasmas mayo SECCIONES NOTICIAS PROYECTOS UNIDAD ACTÚA EVENTUALES secciones ProMéxico.
Interpretando objetos
“Programación orientada a Objetos II”
Exponentes Racionales y Radicales
POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.
INFORMATICA I Arreglos 1 CLASE 17.
Comité Nacional de Información Bogotá, Mayo 30 de 2011 Consejo Nacional de Operación de Gas Natural 1 ESTADISTICAS NACIONALES DE OFERTA Y DEMANDA DE GAS.
Comité Nacional de Información Bogotá, Julio 21 de 2011 Consejo Nacional de Operación de Gas Natural 1 ESTADISTICAS NACIONALES DE OFERTA Y DEMANDA DE GAS.
Comité Nacional de Información Bogotá, Julio 27 de 2011 Consejo Nacional de Operación de Gas Natural 1 ESTADISTICAS NACIONALES DE OFERTA Y DEMANDA DE GAS.
Herencia y Polimorfismo
Tratamiento de listas en Java
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
CULENDARIO 2007 Para los Patanes.
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
Herramientas para el acceso directo a memoria en C++
Conceptos Básicos de Java
Curso de Iniciación a la Programación del iPhone SDK con Objective-C Foundation Framework Moncada, 9 de Julio de 2010.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación I Teoría VI: Recursividad
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Herencia y Polimorfismo en JAVA
PROGRAMACIÓN ORIENTADA A OBJETOS
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Extracto del material disponible en Estrategias para la recolección de basura (Garbage Collection.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
ESCUELA PROFESIONAL DE INGENIERIA INDUSTRIAL CURSO: GESTION DE LA CALIDAD ING.ELIZABETH FERG 1.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
SCJP Sun Certified Programmer for Java 6
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Patrones Creacionales
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Transcripción de la presentación:

Curso de Iniciación a la Programación del iPhone SDK con Objective-C Moncada, 9 de Julio de 2010 Memory Management

2 Memoria Creación e inicialización de objetos –Alloc e init Memory Management –Retain, release, copy, dealloc, autorelease Propiedades –Parámetros de creación –Notación 'punto'

3 Creación e inicialización Método alloc –Método de clase que guarda la memoria necesaria Método init –Método de instancia que inicializa los valores de la variables y realiza otras tareas –Pueden haber varios métodos init en una clase (más específicos con parámetros) NSString *string = [[NSString alloc]

4 Memory Management En iPhone OS NO hay recolector de basura El programador es el encargado de liberar los recursos (llamadas balanceadas) Cada objeto en Objective-C tiene un destructor, método -dealloc

5 Memory Management Cada objeto creado tiene un contador de referencias hacia él (retain count). Al crear (con método +alloc) un objeto, su contador vale 1 -retain y -copy incrementan el contador en 1 -release decrementa el contador en 1 En el método -dealloc se liberan variables de instancia Cuando el contador llega a 0, el método -dealloc se invoca automáticamente (NUNCA MANUALMENTE), y libera el objeto.

6 Memory Management ¿Qué pasa con el siguiente método? -(NSString *)returnString{ NSString *string = [[NSString alloc] return string; //fuga de memoria } Solución: NSAutoreleasePool

7 Autorelease Pool Clase NSAutoreleasePool Pila de objetos a liberar NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Por convención TODOS los objetos construidos con métodos que NO sean Alloc, init, new o copy SON Autorelease

8 Demostración

9 Errores comunes Fugas de memoria (leaks) -(NSString *) proofMethod{ NSString *string = [[NSString alloc] return string; //Fuga de memoria }

10 Errores comunes Fugas de memoria (Soluciones) -(NSString *) proofMethod{ NSString *string = [[NSString alloc] [string autorelease]; //Método autorelease return string; } -(NSString *) proofMethod{ NSString *string = [[NSString alloc] return string; }

11 Errores comunes Liberar objeto autorelease (Error) -(void) proofMethod{ NSString *string = [NSString %s”,[person name]]; [self setName:string]; [string release]; //Error }

12 Errores comunes Liberar objeto autorelease (Soluciones) -(void) proofMethod{ NSString *string = [NSString %s”,[person name]]; [self setName:string]; } -(void) proofMethod{ NSString *string = [[NSString alloc] %s”,[person name]]; [self setName:string]; [string release]; //Bien. NSString con constructor INIT }

13 Propiedades Desde Objective-C 2.0 Proveen el acceso a los atributos del objeto Permiten indicar al compilador – Permisos de acceso a variables de instancia – Políticas de administración de memoria Uso de

14 Propiedades Antes de las propiedades Método GET (NSString *)Name{ return varName; } Método SET (void)setName:(NSString *)value{ If (varName!=value){ [varName release]; varName=[value copy]; }

15 Propiedades Usando propiedades Person:NSObject { NSString *name; (copy) NSString Persona.m

16 Propiedades Modificadores de las propiedades: Nonatomic: Si no hay problemas de concurrencia Assign: Crea un enlace débil (weak link) Retain: Incrementa en 1 el retain count del objeto Copy: Realiza una copia del objeto readonly

17 Notación punto (Dot Syntax) Acceso a variables self.name = newString;es igual a [self setName: newString]; [self name]);es igual a

18 Notación punto (Dot Syntax) Acceso a variables self.name = newString;NO es igual a name = newString self.name = newString usa el método SET name = newStringacceso DIRECTO variable Acceso directo SOLO en método INIT y DEALLOC

19 Notación punto (Dot Syntax) -(void) setName:(NSString *)value { self.name = value; } ¿Cuál es el problema?

20 Notación punto (Dot Syntax) -(void) setName:(NSString *)value { self.name = value; } Es lo mismo que -(void) setName:(NSString *)value { [self setName:value]; // ¡Bucle infinito! }

21 Bibliografía “Objective-C 2.0 Programming Language” “Memory Management Programming Guide for Cocoa”