だから私は、これはメモリの問題であると推定は、ここにコードは次のとおりです。(無効な要約を得続ける)
- (NSString *)giveMeAStringGoddammit
{
NSString *s;
// switch statement to choose which string to assign to s, so essentially:
s = @"a string";
return s;
}
そして、呼び出し元のコード:
NSString *aString;
aString = [self giveMeAStringGoddammit];
しかし、この呼び出しの後、aStringはデバッグ時に無効な要約を持ち、実行時にクラッシュします。 私は、誰かを助けることができます保持または何かが不足していると思う?ありがとう。
#import <Foundation/Foundation.h>
@interface Test : NSObject
- (NSString *)giveMeAStringGoddammit;
@end
@implementation Test
- (NSString *)giveMeAStringGoddammit
{
NSString *s;
// switch statement to choose which string to assign to s, so essentially:
s = @"a string";
return s;
}
@end
int main (int argc, const char * argv[])
{
@autoreleasepool {
Test *t = [[Test alloc] init];
NSLog(@"t says: %@", [t giveMeAStringGoddammit]);
}
return 0;
}
このプログラムの出力は次のとおりです:
t says: a string
のは、プロパティを使用するように変更してみましょう、これはもう少し現実的にするために:あなたはちょうど良い作品を持って何
は、あなたはそれを保持する必要はありません。 、あなたが問題を引き起こしていることを示していないことがあります。 – ThomasW
もっとコードを表示する必要があります。あなたが解放されたオブジェクトを返すか、スイッチが包括的ではなく、実際に 's'に代入することなくそれを過ぎている(これはガーベジの値を意味する) –
aStringは実際にはクラスallそれが差異を生むならば、これがあります。この呼び出しは、最初に値が割り当てられます。今、他の提案をしようとしています。 –