проблема с NSString, он теряет свое значение после назначения его параметру функции - PullRequest
0 голосов
/ 23 марта 2011

Objective-C действительно странный, я не могу его освоить ... У меня есть NSstring, которая теряет свою ценность, если я пытаюсь переназначить ее ... Вот как я ее использую ... Может кто-нибудь сказатьмне что я делаю не так?это происходит при присвоении нового значения ..

@interface PageViewController : UIViewController {

    NSString *mystring;
}

- (void)viewDidLoad {

    mystring=[ [NSString alloc] initWithString:@""];
}

-(void) function_definition:(NSString *) param {
.............
    mystring=param;
.........
}

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Чаще всего вы хотите указать это как свойство:

@interface PageViewController : UIViewController {

    NSString *mystring;
}

@property (nonatomic, retain) NSString *mystring;

Тогда в вашей реализации,

@synthesize mystring;

- (void)dealloc {
    [mystring release];
    [super dealloc];
}

И, наконец, в любом месте вашей реализации установите значение mystring с помощью:

[self setMystring:@"something"];

или

self.mystring = @"somethingelse";

Если вы выделяете новую строку, обязательно ее отпустите. Он сохраняется автоматически с использованием свойства.

self.mystring = [[[NSString alloc] initWithString:@"hello"] autorelease];

Наконец, в вашей функции:

-(void) function_definition:(NSString *) param {
.............
    self.mystring = param;
.........
}
0 голосов
/ 23 марта 2011

Не совсем понятно, что вы подразумеваете под «потерей своей ценности», но я думаю, что проблема здесь заключается в управлении памятью - вам нужно прочитать того, как Какао справляется с этим, но в этомдело, которое вам нужно сделать:

-(void) function_definition:(NSString *) param {
.............
    if (mystring != param) {
        [mystring release];
        mystring = [param retain];
    }
.........
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...