2011-01-11 21 views
9

Merhaba Şu anda bu hata iletisini alıyorum. ve muz sevgisiyle, doğru yapmadığım şeyi anlayamıyorum.xcode: property 'title' 'copy' özniteliği süper sınıf 'UIViewController' özelliği eşleşmiyor

Onun sadece bir

IBOutlet UILabel *title; 

ve ben dinamik çalışma zamanı sırasında başlığı değiştirmek çünkü bir UILabel bağlı benim xib dosyasına bağlanır yaptığım

@property(nonatomic, retain) IBOutlet UILabel *title; 

.

Sınıflar /../ taskViewController.h: 44: Uyarı: Özellik 'title' 'kopya' nitelik süper sınıfı eşleşmiyor 'UIViewController'ın' özelliği

Ne anlama geldiğini anlamıyorum. Normalde uyarı mesajlarından kurtulabilirim. Ama bu ... neler olup bittiğine dair bir fikrim yok.

Birisi bana rehberlik edebilir ve burada neler olduğunu açıklayabilir.

cevap

15

Sorununuz, UIViewController zaten bir başlık özelliğini tanımladığından ve yaptığınızdan farklı bir bellek yönetme seçeneği kullanıyor olmanızdır. Bunu düzeltmek için mülkünüzün adını değiştirin. örn .: @property (nonatomic, copy) UILabel *titleLabel;. Örnek değişkeninin aynı ada sahip olmasını istiyorsanız ve @synthesize işlevini kullanıyorsanız, @synthesize titleLabel=title; kullanın.

Bir yana, neden bir UILabel'i kopyalıyorsunuz? Normalde, aynı nesne olması için koru kullanırsınız.

+0

Bu benim sahip olduğum şey ... 'Kopya' kelimesine sahip değilim, gerçekten de 'içinde tutma' kelimesine sahiptim ..... @property (nonatomic, retain) IBOutlet UILabel * title; – Pavan

+0

Sonra UIViewController kopya kullanmanız gerekir. Bir NSString olduğu için bunu beklerdim, ama hatanın kullandığınız şeyi vereceğini düşündüm. – ughoavgfhw

+0

yardımcı etiket adını değiştirerek. Bu yardım için çok teşekkür ederim. Yani eğer doğru bir şekilde anlarsam, UILabel UIViewController'ın bir başlık adı verilen bir alt sınıfıdır ve ben bu özellikle çelişen değişken ad başlığımı adlandırdım. Bu uyarının görünmesi için – Pavan

3

Anlamı şu:

  • Eğer UIViewController bir alt sınıfı olan
  • üzere özellik
  • üst sınıfını siz "copy" özelliği ilan ettiler "başlığı"
  • adında bir özellik içerir (UIViewController) zaten çelişkili bir tanımla "başlık" özelliğine sahiptir (yani, "kopya" değil)
+0

ama ben harikayım? tüm ive yapılır ... @property (nonatomic, korumak) IBOutlet UILabel * title; – Pavan

+0

Tamam, belki de mesaj geriye doğrudur ve "kopyala" bildiren "UIViewController". Her halükarda, ughoavgfhw'in öne sürdüğü gibi, çatışmadan kaçınmak için değişken adınızı değiştirmek isteyebilirsiniz. –

+0

@DavidGelhar böylece alt sınıfın özniteliği, üst sınıfın özniteliğini geçersiz kılacak mı? – onmyway133

0

Peki ben sadece bu başlığı UIViewController'da önceden tanımlanmış bir nesne olduğunu açıklayın, böylece aynı isimle kendi nesnelerinizi oluşturamazsınız, başka bir şeyle değiştiremezsiniz ve bu hatayı size vermeyeceğini görürsünüz.

İlgili konular