Ben sadece dün dün bellek optimizasyonları giriş this blog girdi. İçinde, yazar, [NSString stringWithFormat:@"..."]
yerine [[NSString alloc] initWithFormat:@"..."]
kullanmayı seçmesinin belirli nedenlerini verir. Özellikle, bir autorelease nesnesi oluşturursanız, iOS cihazları bellek havuzunu otomatik olarak serbest bırakmaz.
eski sürüm gerektirdiğini el release
o bir yapı içinde bu gibi: İşte
NSString *remainingStr = nil;
if (remaining > 1)
remainingStr = [[NSString alloc] initWithFormat:@"You have %d left to go!", remaining];
else if (remaining == 1)
remainingStr = [[NSString alloc] initWithString:@"You have 1 left to go!"];
else
remainingStr = [[NSString alloc] initWithString:@"You have them all!"];
NSString *msg = [NSString stringWithFormat:@"Level complete! %@", remainingStr];
[remainingStr release];
[self displayMessage:msg];
, remainingStr
sadece geçici olarak ihtiyaç vardı ve bu yüzden de çok daha sonra ortaya çıkabilir sallanmasını (kaçınmak için program), ihtiyacım olan anıyı açık bir şekilde hallediyorum.
Tamam, teşekkürler. –
Deliğe 32 saniye boyunca dayak yendi. :-) –
Aslında; Bu, korunan örneği döndüren '+ tahsisidir…' 'init *', korunma sayımını değiştirmez (ancak, bu durumda, çağrılandan farklı bir durum döndürür). – bbum