NSString的问题,它在将它赋值给函数参数后会失去它的值

时间:2011-03-22 22:35:20

标签: iphone objective-c pointers nsstring

Objective-C真的很奇怪,我无法理解它...... 我有一个NSstring,如果我试图重新分配它就会失去它的价值...... 这是我如何使用它.. 谁能告诉我我做错了什么?它正在分配新值时发生..

@interface PageViewController : UIViewController {

    NSString *mystring;
}

- (void)viewDidLoad {

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

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

2 个答案:

答案 0 :(得分:2)

最常见的是,您希望将其指定为属性:

@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;
.........
}

答案 1 :(得分:0)

“失去它的价值”并不完全清楚你的意思,但我认为这里的问题是内存管理问题 - 你需要do some reading Cocoa如何处理这个问题,但在这种情况下你会需要做的事:

-(void) function_definition:(NSString *) param {
.............
    if (mystring != param) {
        [mystring release];
        mystring = [param retain];
    }
.........
}
相关问题