2011-01-11 9 views
9

Witam Obecnie otrzymuję ten komunikat o błędzie. i przez miłość do banana, nie mogę zrozumieć, co nie robię dobrze.xcode: atrybut właściwości 'title' 'copy' nie pasuje do właściwości super klasy "UIViewController"

Jest tylko

IBOutlet UILabel *title; 

i

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

Zrobiłem który jest podłączony do mojego pliku XIB podłączonego do UILabel bo dynamicznie zmienić tytuł w czasie wykonywania.

Klasy /../ taskViewController.h: 44: Ostrzeżenie: Nieruchomość 'tytuł' 'copy' atrybut nie pasuje super klasy 'UIViewController'

ja nie rozumiem, co to znaczy. Zwykle jestem w stanie pozbyć się komunikatów ostrzegawczych. Ale ten ... Nie mam pojęcia, co się dzieje.

Czy ktoś może mnie poprowadzić i wyjaśnić, co się tutaj dzieje.

Odpowiedz

15

Twój problem polega na tym, że UIViewController definiuje już właściwość title i używasz innej opcji zarządzania pamięcią niż ona. Aby to naprawić, zmień nazwę swojej nieruchomości. np. @property (nonatomic, copy) UILabel *titleLabel;. Jeśli chcesz, aby zmienna instancji miała taką samą nazwę i używałeś @synthesize, użyj @synthesize titleLabel=title;.

Na marginesie, dlaczego kopiujesz UILabel? Normalnie używałbyś zachować, aby był to ten sam obiekt.

+0

to jest to, co mam ... Nie mam słowa "kopia", rzeczywiście mam słowo "zachowaj" w nim ..... @property (nonatomic, zachowaj) IBOutlet UILabel * title; – Pavan

+0

Następnie UIViewController musi użyć kopii. Spodziewałbym się tego, ponieważ jest to NSString, ale pomyślałem, że błąd da ci to, czego użyłeś. – ughoavgfhw

+0

zmiana nazwy etykiety pomogła. Dziękuję bardzo za tę pomoc. Więc jeśli rozumiem poprawnie, UILabel jest podklasą UIViewController, która zawiera właściwość o nazwie title i nazwa mojego tytułu o nazwie zmiennej, która jest w konflikcie z tą właściwością .. powodując pojawienie się tego ostrzeżenia. – Pavan

3

To znaczy:

  • masz podklasę UIViewController
  • zawiera właściwość o nazwie „title”
  • zostały uznane za własność z „kopią” atrybut
  • klasy nadrzędnej (UIViewController) ma już właściwość "tytułową" z konfliktową definicją (tj. Nie "kopiuj")
+0

ale nie mam? wszystko co zrobiłem to .... @property (nonatomic, retain) IBOutlet UILabel * title; – Pavan

+0

OK, może wiadomość jest wtedy wstecz, a "UIViewController" deklaruje to jako "copy". W każdym razie prawdopodobnie chcesz zmienić nazwę zmiennej, aby uniknąć konfliktu, jak sugeruje ughoavgfhw. –

+0

@DavidGelhar, więc atrybut podklasy zastąpi atrybut nadklasy? – onmyway133

0

Cóż, chcę po prostu wyjaśnij, że tytuł jest predefiniowanym obiektem w UIViewController, więc nie możesz tworzyć własnych obiektów o tej samej nazwie, zmienić coś innego i zobaczyć, że to nie spowoduje tego błędu.

Powiązane problemy