Hallo,
ich bin total neu in der Objective-c Entwicklung. Habe mich schon aber schon zum Speicherverwaltungskonzept belesen(alloc,release, retain,...) Programmiere seit Jahren aber in Pascal,C und so weiter.
Ich habe folgenden Programmcode geschrieben, welcher Objekte einer Klasse (test) in einem Array verwalten soll, und möcht einfach von euch mal wissen ob so korrekt verwendbar oder memleak noch entstehen könnte:
test.h:
	
		
			
		
		
	
	
			Alles anzeigen
		
								
			
test.m
	
		
			
		
		
	
			Alles anzeigen
		
			
InputTestModel.m:
	
		
			
		
		
	
			Alles anzeigen
		
			
und verwendet z.B. so in einer anderen Klasse durch InputTestModel* model; :
	
		
			
		
		
	
			Alles anzeigen
		
			
Funktionieren tut das jetzt alles erstmal so, aber bin mir nicht 100% ob alles korrekt freigegeben.
Für jeden Hinweis auf Fehler oder Verbesserung, vielen Dank.
MfG rio
									
									
								ich bin total neu in der Objective-c Entwicklung. Habe mich schon aber schon zum Speicherverwaltungskonzept belesen(alloc,release, retain,...) Programmiere seit Jahren aber in Pascal,C und so weiter.
Ich habe folgenden Programmcode geschrieben, welcher Objekte einer Klasse (test) in einem Array verwalten soll, und möcht einfach von euch mal wissen ob so korrekt verwendbar oder memleak noch entstehen könnte:
test.h:
Quellcode
test.m
Quellcode
- InputTestModel.h:
- #import <Foundation/Foundation.h>
- #import "test.h"
- @interface InputTestModel : NSObject {
- NSMutableArray* dataArray;
- }
- @property (nonatomic, retain) NSMutableArray *array;
- - (InputTestModel*) init;
- - (void) dealloc;
- - (NSInteger)createEntry:(test*)data;
- - (test*)getEntryAtIndex:(NSInteger)index;
- - (NSInteger)count;
- @end
InputTestModel.m:
Quellcode
- #import "InputTestModel.h"
- @implementation InputTestModel
- @synthesize array;
- - (InputTestModel*) init {
- self = [super init];
- if (self) array = [[NSMutableArray alloc] init];
- return self;
- }
- - (void)dealloc
- {
- [array removeAllObjects];
- [array release];
- array = nil;
- [super dealloc];
- }
- - (NSInteger)createEntry:(test*)data {
- NSInteger i;
- [array addObject:data];
- i = [array count]-1;
- return i;
- }
- - (test*)getEntryAtIndex:(NSInteger)index {
- return (test*)[array objectAtIndex:index];
- }
- - (NSInteger)count {
- return [array count];
- }
- @end
und verwendet z.B. so in einer anderen Klasse durch InputTestModel* model; :
Quellcode
- // Erzeugung in der init einer Klasse:
- - (void) init {
- [super init];
- model = [[InputTestModel alloc] init];
- }
- ..
- ..
- // Erzeugung in der init einer Klasse:
- - (void) irgendeineFunktion{
- test* data = [[test alloc] init];
- data.hint = 4;
- data.remark = @"hallo";
- NSInteger x = [model createEntry:data];
- test* data2 = [model getEntryAtIndex:x];
- NSLog(@"%d",data2.hint);
- [data release];
- NSLog(@"%d",data2.hint);
- }
- ..
- // Freigabe in der selben Klasse
- - (void)dealloc
- {
- ...
- [model release];
- model = nil;
- [super dealloc];
- }
Funktionieren tut das jetzt alles erstmal so, aber bin mir nicht 100% ob alles korrekt freigegeben.
Für jeden Hinweis auf Fehler oder Verbesserung, vielen Dank.
MfG rio

