Hallo ihr, 
verdammt ... vielleicht könnt ihr mir erklären, warum das RC des Objekts nicht um 1 erhöht wurde, nachdem retain an diesem Objekt geschickt wurde?
Hier Codeauszüge:
worker.h
	
		
			
		
		
	
			Alles anzeigen
		
								
			
worker.m
	
		
			
		
		
	
			Alles anzeigen
		
			
main.m
	
		
			
		
		
	
			Alles anzeigen
		
			
Das retainCount von lastname sollte eigentlich 2 sein? oder?
Sonst hätte ich das Prinzip verstanden, oder?
									
									
								verdammt ... vielleicht könnt ihr mir erklären, warum das RC des Objekts nicht um 1 erhöht wurde, nachdem retain an diesem Objekt geschickt wurde?
Hier Codeauszüge:
worker.h
C-Quellcode
- #ifndef _WORKER_H_
- #define _WORKER_H_
- #include <Foundation/Foundation.h>
- @interface Worker : NSObject
- {
- NSString * _lastname;
- NSString * _firstname;
- int _age;
- }
- +(Worker *)createWorker:(NSString*)lastname firstname:(NSString*)firstname age:(int)age;
- -(id)init;
- -(void)setLastname:(NSString *)lastname;
- -(void)setFirstname:(NSString *)firstname;
- -(void)setAge:(int)age;
- -(NSString *)lastname;
- -(NSString *)firstname;
- -(int)age;
- @end
- #endif // _WORKER_H_
worker.m
Quellcode
- #include "worker.h"
- @implementation Worker
- // CA
- +(Worker *)createWorker:(NSString*)lastname firstname:(NSString*)firstname age:(int)age
- {
- Worker * worker = [[[Worker alloc] init] autorelease];
- [worker setLastname:lastname];
- [worker setFirstname:firstname];
- [worker setAge:age];
- return worker;
- }
- -(id)init
- {
- [super init];
- _lastname = [[NSString alloc] init];
- _firstname = [[NSString alloc] init];
- _age = 0;
- return self;
- }
- // speicher freigeben
- -(void)dealloc
- {
- NSLog(@"dealloc von Klasse worker");
- [_lastname release];
- [_firstname release];
- [super dealloc];
- }
- -(void)setLastname:(NSString *)lastname
- {
- [lastname retain];
- [_lastname release];
- _lastname = lastname;
- }
- -(void)setFirstname:(NSString *)firstname
- {
- [firstname retain];
- [_firstname release];
- _firstname = firstname;
- }
- -(void)setAge:(int)age
- {
- _age = age;
- }
- -(NSString *)lastname
- {
- return _lastname;
- }
- -(NSString *)firstname
- {
- return _firstname;
- }
- -(int)age
- {
- return _age;
- }
- @end
main.m
C-Quellcode
- #include <Foundation/Foundation.h>
- #include "worker.h"
- int main(int argc, const char *argv[])
- {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- // dieses objekt wird zum ARP hinzufügt (CA)
- Worker * worker1 = [Worker createWorker:@"Mustermann" firstname:@"Fritz" age:44];
- NSString * lastname = [[worker1 lastname] retain];
- NSString * lastname_copy = lastname;
- NSLog(@"retainCount for lastname_copy: %i", [lastname_copy retainCount]);
- NSLog(@"retainCount for lastname: %i", [lastname retainCount]);
- [pool release];
- return 0;
- }
Das retainCount von lastname sollte eigentlich 2 sein? oder?
Sonst hätte ich das Prinzip verstanden, oder?
Aus macfreakz wurde Apfelbeisser …
									

 
									