Objective-C真的很奇怪,我无法理解它...... 我有一个NSstring,如果我试图重新分配它就会失去它的价值...... 这是我如何使用它.. 谁能告诉我我做错了什么?它正在分配新值时发生..
@interface PageViewController : UIViewController {
NSString *mystring;
}
- (void)viewDidLoad {
mystring=[ [NSString alloc] initWithString:@""];
}
-(void) function_definition:(NSString *) param {
.............
mystring=param;
.........
}
答案 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];
}
.........
}