2010-04-22 17 views
5

Referans olarak bir CGFloat kullanan bir yöntem yapmak istiyorum.Referans olarak bir CGFloat nasıl geçilir ve ayarlanır?

Böyle bir şey yapabilir miyim?

Bu yıldızlardan iki tanesine sahip olan diğer nesne işaretçilerinden farklı görünmesi gerekir. Ayrıca ben böyle bir şey yapmak gerekir emin değilim:

- (void)doStuff:(const CGFloat*)floatPointer 

Ve tabii ki, o floatPointer bir CGFloat değer atamayı nasıl hiçbir fikri

. Belki &floatPointer = 5.0f;?

Birisi bazı örnekler verebilir ve bunları açıklayabilir mi? Müthiş olur!

- (void)doStuff:(CGFloat*)floatPointer { 
    *floatPointer = 5.0f; 
} 

Açıklama: Eğer referans olarak bir CGFloat geçiyoruz

cevap

9

amaç-c yüzden

-(void) doStuff (CGFloat *) f 
{ 
    *f = 1.2; 
} 

çağrı ile, halen c

CGFloat f = 1.0; 
[self doStuff:&f]; 
3

ardından erişen bu basit bir referans alıyorsanız gibi, sen de-başvuru için gereken işaretçi (*) ile almak veya değeri ayarlayın.

+0

. Teşekkürler. Neden const anahtar sözcüğünü CGFloat'ın önüne yazmalıyım? – dontWatchMyProfile

+0

Bir const işaretçisine değer atayamazsınız ... – kennytm

+0

const anahtar sözcüğü: "Size referansı iletiyorum ama değiştirmenize izin verilmiyor". –

2

sen (nefret işaretçileri ve ;-) nesnel-C++ tercih referans olarak geçmektedir aşağıdaki alternatif ise :

-(void) doStuffPlusPlus:(CGFloat &) f 
{ 
    f = 1.3; 
} 

çağrı

tarafından
CGFloat abc = 1.0; 
[self doStuffPlusPlus:abc]; 

ve sen ??? kaynak dosya adı yeniden adlandırmak gerekir. M ??? etmek. Bilmekte fayda mm

İlgili konular