Cocoa の文字列のメモリ特性をよりよく理解するための助けが必要です。私が使用しているアプリは、1 つのビュー コントローラーと n 個のツール オブジェクトを使用しています。ビュー コントローラーはプログラムの存続期間中存続しますが、ツール オブジェクトは割り当てられて解放されます。
文字列 toolName_ があり、実装で着信ツール オブジェクトを構成するとします。オブジェクトにツール名がない場合は、toolName_ 文字列を @"not set" に設定します。ツールに名前がある場合、文字列をツールの名前に設定したいと思います。
入力値を toolName_ に格納する適切な方法を知りたいのですが、これは割り当てられたオブジェクトである場合もあれば、定数文字列である場合もあります。
-(BOOL)setToolObject: ToolObject: obj{
ToolObject someObj = nil;
someObj = [[ToolObject alloc]initWithObject obj];
if(someObj != nil){
if(! [someObj.toolName isEqualToString: @""]){
self->toolName_ = Which method should I use given the above question?
The last instance may have been a constant string but may not have.
[self->toolName_ release] (can I send a release message to a constant
string without causing a problem?)
self->toolName = [[NSString alloc]initWithString:someObj.toolName];
OR
self->tool name = [NSString stringWithString: someObj.toolName];
This method is self releasing but I don't own it and I'm still not sure
what happens to the constant string if it existed. I think I read it's
not recommended to use this on member vars.
}else{
self->toolName_ = @"not set";
}
return YES;
}else{
return NO;
}
}
アドバイスをいただければ幸いです。