Thank you guys for your assistance. I come from a C++ background and have done embedded design in ASM. But this way of working and particularly the framework is very new to me. I understand what you are saying, but the literature I am reading is very disappointingly. I have solved the issue with the strings soon after I wrote the message but just for completeness and for the sake of a decent critique I will post the new code. I love the term you are flailing around here, thats exactly how I felt until I discovered where I was going wrong. Thanks Graham and Stephen for your replies and comments.
Graham I believe you asked what does "//does not work" mean. I think the compiler was giving me a function returns void and should be handled as such. Basically, function returns nothing. This line of code seems to work for exactly what I was looking for: temp = [[temp stringByAppendingFormat:@" %@ %@ \n", input1, input2] retain]; although I have to admit I am unsure really what the "retain" will actually do here with respect to memory. The the preceding [temp autorelease] create a memory leak or is this the correct way to handle memory management within the framework? ----------------------------------- <code> #import <Foundation/Foundation.h> @interface Calculator : NSObject { double accumulator; NSString* caption; NSString* name; NSString* temp; } - (id) init; - (void) setAccumulator:(double) n; - (void) printAccumulator; - (NSString*) caption; - (NSString*) name; - (NSString*) temp; - (void) setCaption: (NSString*)input; - (void) setName: (NSString*)input; - (void) setTempString: (NSString*)input; - (void) combineString: (NSString*) input1 : (NSString*) input2; - (void) printCaption; - (void) printName; - (void) printTemp; @end @implementation Calculator - (id) init { if ( self = [super init] ) { [self setAccumulator:0]; [self setCaption:@"Default Caption"]; [self setName:@"Default Name"]; [self setTempString:@"empty"]; } return self; } - (void) setAccumulator: (double) n { accumulator = n; } - (void) printAccumulator { NSLog(@"Accumulator = %f", accumulator); } - (NSString*) caption { return caption; } - (NSString*) name { return name; } - (NSString*) temp { return temp; } - (void) setCaption: (NSString*)input { [caption autorelease]; caption = [input retain]; } - (void) setName: (NSString*)input { [name autorelease]; name = [input retain]; } - (void) setTempString: (NSString*)input { [temp autorelease]; temp = [input retain]; } - (void) combineString: (NSString*) input1 : (NSString*) input2 { [temp autorelease]; temp = @""; temp = [[temp stringByAppendingFormat:@" %@ %@ \n", input1, input2] retain]; } - (void) printCaption { NSLog(@"%@ \n", self.caption); } - (void) printName; { NSLog(@"%@ \n", self.name); } - (void) printTemp; { NSLog(@"%@ \n", self.temp); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... Calculator *theDevice = [[Calculator alloc] init]; [theDevice init]; [theDevice printAccumulator]; [theDevice setAccumulator:10]; [theDevice printAccumulator]; [theDevice setName: @"Brian D"]; [theDevice setCaption: @"Rocks"]; [theDevice combineString:[theDevice name] : [theDevice caption]]; [theDevice printTemp]; [theDevice printName]; [theDevice printCaption]; NSLog(@"The two variables: %@, %@ \n", [theDevice name], [theDevice caption]); NSLog(@"Hello, World!"); [theDevice release]; [pool drain]; return 0; } </code> _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com