2009-08-27 16 views
12

Benim .h dosyasında @interface tanımı içinde BOOL değeri var. İşte aşağıda. Bir işaretçi olsun ya da olmasın aynı sorunu var. Benim .h dosyasında ithalatı için satırında: " 'korumak' özelliği nesne türünde olmalıdır mülk 'myBoolVariableName' hatası" Ben derlerkenhata: property 'myBoolVariableName', 'retain' özelliği ile nesne türü olmalıdır

@interface myCustomViewController : UIViewController <UIWebViewDelegate> { 
{ 
//...more iboutlets defined above 
BOOL *myBoolVariableName; 
} 

, ben olsun.

Ben bir tamsayı/NSNumber hakkında burada bu sayfayı bulundu:

http://discussions.apple.com/thread.jspa?threadID=1846927

Yani, ben bir @interface tanımı içinde BOOL değerlerini kullanamazsınız görünüyor. Bunun yerine ne kullanabilirim?

BOOL/boole değerleri için ne yapmalıyım? Ben tahmin ediyorum

cevap

33

daha sonra Arayüzünüze Eğer böyle bir şey var:

değer bir BOOL bir göstericidir var bir özellik yapmak, ve anlam tutmak kullanmak demektir
@property (retain) BOOL *myBoolVariableName; 

.

Sorununuz BOOL *, bir nesne için bir işaretçi değil, bir bellek baytının işaretçisidir. Ve saklamak sadece nesnelere uygulanan bir şeydir.

BOOL özelliğinin nasıl yapılacağı aşağıda açıklanmıştır.

@interface myCustomViewController : UIViewController <UIWebViewDelegate> { 
    BOOL myBoolVariableName; 
} 

@property myBoolVariableName; 

@end 

önemli farklar

değişkeni "BOOL" değil "BOOL *" olarak ilan edilir ve özellik vardır (korumak) edilmemesidir.

+4

Bunu böyle yapmak zorundaydım, ama aksi takdirde sağda ölüyorsunuz. :) Teşekkür ederim. @property BOOL myBoolVariableName; – Neo42

+0

Bu ayrıca Integers için geçerli olacak –

1

Benzer bir durumla karşılaştım. Ben bu sorunu çözdüm, Jon Hess'ın bir cevabını aldım ama bir hata buldum. Tür adı bir belirtici veya niteleyici gerektirir.

@property myBoolVariableName; 

yüzden BOOL eklendi ve sorunu çözmüş gibi Benim önceki sürümü oldu.

İlgili konular