• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
String variables in classes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

String variables in classes


  • Subject: String variables in classes
  • From: Brian Durocher <email@hidden>
  • Date: Sat, 01 Jan 2011 16:00:20 -0500

I have a quick question about member variables in a class. Is there a
way to use an NSMutableString in a class as a member? I would like to
make a string which accumulates equation text, in a calculator class. I
have tried a number of methods to get this working with no success. The
output of the NSMutableString is always Nil as is the NSString, I know
there is an issue with initialization of the strings but I can not
figure out how or why I cannot initialize them in this fashion. When
using the member function and declaring the  variable locally in that
function there is no problem.  Now I could pass out the Strings and
handle the concatenation in my  main()  but I want to keep the data in
the class and not in main. Can anyone shed some insight into why this is
not working? Comments included in the code show where I have attempted
initialization and when possible the exceptions created by the code.

This is what I currently have

<code>

#import <Foundation/Foundation.h>

@interface Calculator : NSObject
{
    double accumulator;
    NSMutableString *equation;
    //NSMutableString equation; //= [[NSMutableString alloc]
initWithString:@"Starting Value - "];
    NSString *equationI;

}

- (id)init;
-(void) dealloc;
- (void) initialize;
- (void) clear;
- (void) total;
- (void) destroy;
- (double) accumulator;
- (void) add: (double) n;
- (void) subtract: (double) n;
- (void) multiply: (double) n;
- (void) divide: (double) n;
- (void) exponent: (double) n;



@end


@implementation Calculator
- (id) init
{
    [super init];
    //equation = [[NSMutableString alloc] init]; //does not work
    //NSMutableString *equation = [[NSMutableString alloc] init];
//causes exception, compiler says variable is not used.
    return self;
}

- (void)dealloc
{
    //[myNewString release];
    [equation release];
    [equationI release];
    //[super dealloc]; // pointer being freed was not allocated
}

- (void) initialize
{
    accumulator = 0;

    /*Some things i have tried */
    //equation = "Init";
    //NSMutableString equation = [[NSMutableString alloc] init];
    //NSMutableString *equation = [*equation appendString:"Init"];
    //NSMutableString *equationI = "Init2";
    //NSMutableString equation = [[NSMutableString alloc]
initWithString:@"Init"];
    //equation = [[NSMutableString alloc] initWithString:@"Test 002"];
//causes a crash

    //equation = [[NSMutableString alloc] initWithString:@"s"]; //causes
exception
    //equationI = [[NSString alloc] init];
    equation = [equation initWithString:@"test"];
    equationI =    [equationI initWithString:@"test2"];
    //[equation setString:@"test1"];
    //[equationI setString:@"test2"];

    NSLog(@"%@ \n", equation);
    NSLog(@"%@ \n", equationI);

    [equation appendString:@"Initialized"];
    //equation = @"Equation - ";
    //[equation setString: @"Equation:"];
    //[equationI appendFormat: @"%f", accumulator ];

    [equation stringByAppendingFormat: @"Equation - %f", accumulator ];

}
- (void) clear
{

}
- (void) total
{
    NSLog(@"Displaying NSMutableString %@ = %f", equation, accumulator);
    NSLog(@"Displaying NSString %@ = %f", equationI, accumulator);

}
- (void) destroy
{

}
- (double) accumulator
{
    return accumulator;
}
- (void) add: (double) n
{
    accumulator += n;
    [equation appendFormat: @" + %f ", n];

    NSString* myNewString = [NSString stringWithFormat:@"%f", n];
    NSLog(@"%@", myNewString);

    [equation stringByAppendingFormat: @" + %f ", n];
}
- (void) subtract: (double) n
{
    accumulator -= n;
    [equation appendFormat: @" - %f ", n];
    NSString* myNewString = [NSString stringWithFormat:@"%f", n];
    NSLog(@"%@", myNewString);


    [equation stringByAppendingFormat: @" - %f ", n];

}
- (void) multiply: (double) n
{
    accumulator *= n;
    [equation appendFormat: @" * %f ", n];
    NSString* myNewString = [NSString stringWithFormat:@"%f", n];
    NSLog(@"%@", myNewString);

    [equation stringByAppendingFormat: @" * %f ", n];

}
- (void) divide: (double) n
{
    accumulator /= n;
    [equation appendFormat: @" %f / %f ", n];
    NSString* myNewString = [NSString stringWithFormat:@"%f", n];
    NSLog(@"%@", myNewString);

    [equation stringByAppendingFormat: @" / %f ", n];

}
- (void) exponent: (double) n
{
    accumulator = pow(accumulator, n);
    [equation appendFormat: @" ^ %f ", n];
    NSString* myNewString = [NSString stringWithFormat:@"%f", n];
    NSLog(@"%@", myNewString);

    [equation stringByAppendingFormat: @" ^ %f ", n];

}


@end


int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    Calculator *deskCalc = [[Calculator alloc] init];

    [deskCalc init];
    [deskCalc initialize];
    [deskCalc add:10];
    [deskCalc subtract:5];

    [deskCalc total];
    [deskCalc dealloc];
    [deskCalc release];
    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}

</code>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: String variables in classes
      • From: Graham Cox <email@hidden>
    • Re: String variables in classes
      • From: "Stephen J. Butler" <email@hidden>
  • Prev by Date: iPhone UISearchDisplayController how to handle memory warning
  • Next by Date: Re: String variables in classes
  • Previous by thread: Re: iPhone UISearchDisplayController how to handle memory warning
  • Next by thread: Re: String variables in classes
  • Index(es):
    • Date
    • Thread