23

i'm an absolute newbie with objective-c

with this code

NSMutableString *teststring;
[teststring appendString:@"hey"];
NSLog(teststring);

nothing gets displayed in the console.

Surely i'm doing something wrong here... :-)

Apurv
  • 16,846
  • 8
  • 48
  • 66
murze
  • 3,879
  • 8
  • 41
  • 68

5 Answers5

57

You need to create the string first.

NSMutableString *teststring = [[NSMutableString alloc]init];

[teststring appendString:@"hey"];

NSLog(teststring);

Now, it will print.

eric.mitchell
  • 8,596
  • 12
  • 51
  • 92
Apurv
  • 16,846
  • 8
  • 48
  • 66
28

Change first line to

NSMutableString *teststring = [NSMutableString string];
Shmidt
  • 16,230
  • 18
  • 85
  • 132
9

This line

NSMutableString *teststring;

simply establishes a pointer, but does not create anything. Instead, you need to create a new instance of NSMutableString, for example:

NSMutableString *teststring = [[NSMutableString alloc] init];
[teststring appendString:@"hey"];
NSLog("%@", teststring);
PengOne
  • 47,805
  • 17
  • 129
  • 148
5

Sample:

NSMutableString *buffer = [[NSMutableString alloc] init]; // retain count = 1. Because of the "alloc", you have to call a release later

[buffer appendString:@"abc"];
NSLog(@"1 : %@", buffer);
[buffer appendString:@"def"];
NSLog(@"2 : %@", buffer);

[buffer release]; // retain count = 0 => delete object from memory
Sly
  • 2,095
  • 5
  • 22
  • 28
0
NSMutableString *tag = [NSMutableString stringWithString: @"hello <td> this is inside td </td> 000999 <><> ..<. ><> 00000 <td>uuuuu</td> vvvvv <td> this is also inside td </td>"];  
    NSRange open = [tag rangeOfString:@"<"]; 
    while(open.location != NSNotFound) 
    {
        NSRange close = [tag rangeOfString:@">"]; 
        NSRange string = NSMakeRange(open.location, close.location-open.location+1);
        [tag replaceCharactersInRange:string withString:@""];               
        open =  [tag rangeOfString:@"<"];
        NSLog(@"%@",tag);
    }
Dawny33
  • 9,571
  • 15
  • 75
  • 124