2012-04-06 29 views
8

Görüntüleme sayısını değiştirmek için aşağıdaki kodu kullanıyorum ve hiç sorun yaşamadım. Projemde ilk defa ARC kullanmaya başladım ve ikinci satırda aşağıdaki hatayı alıyorum. "Salt okunur değişken atanabilir değil"Objective-C - Salt okunur değişken atanamaz mı?

Bunu farklı bir şekilde ARC ile yapmak zorunda mıyım?

CGRect rect = self.frame; 

[UIView animateWithDuration:0.4 animations:^{ 
    rect.origin.x = 57; 
    self.frame = rect; 
}]; 
+0

Bu kod gayet yasal. Hatayla karşılaşmamalısınız. Bu soruna neden olabilecek bir şey var mı? –

+0

Harika bir soru ve harika bir cevap. Teşekkürler! – RileyE

cevap

22

Sorun şu ki CGRect'i bir animasyon bloğu içinde kullanıyordum. Değişkenin __block ile işaretlenmesi sorunumu çözdü

__block CGRect rect = self.frame; 
+1

Ayrıca, CGRect değişkenini bloğun kendisinde de kullanabilirsiniz, çünkü sadece 'self' çerçevesini değiştirmek için kullanıyorsunuz. Bu kodun okunmasını kolaylaştıracaktır. – ikuramedia

+0

Bağlıdır .... kendi kendine ait kareler değişirse * animasyon başlarsa *, daha sonra @ikuragames'in önerdiği şey kodun davranışını değiştirir. Araxt'ın önerdiği, OP'nin ilk yazdığı gibi tamamen aynı davranıştır. – bbum

+0

Bu bloğa yerleştirmedim çünkü bloğumun dışında da kullanılıyordu – aryaxt

İlgili konular