2011-01-11 10 views
9

こんにちは私は現在このエラーメッセージを受け取ります。バナナの愛によって、私は何を正しくしていないのか分かりません。xcode:プロパティ 'title' 'コピー'属性がスーパークラス 'UIViewController'プロパティと一致しません

そのわずか

IBOutlet UILabel *title; 

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

私は動的に実行時にタイトルを変更するので、UILabelに接続されている私のXIBファイルに接続されて作られました。

クラス/../ taskViewController.h:44:警告:プロパティ「タイトル」「コピー」属性は、スーパークラスと一致していません「のUIViewController」プロパティ

私はそれが何を意味するか理解しません。 通常、私は警告メッセージを取り除くことができます。しかし、これは...私は何が起こっているのか分からない。

誰かが私を案内し、ここで何が起こっているのか説明できますか?

答えて

15

あなたの問題は、UIViewControllerが既にtitleプロパティを定義していて、あなたがそれとは違うメモリ管理オプションを使用しているということです。これを修正するには、プロパティの名前を変更します。例:@property (nonatomic, copy) UILabel *titleLabel;。インスタンス変数の名前を同じにして@synthesizeを使用する場合は、@synthesize titleLabel=title;を使用します。

なぜ、あなたはUILabelをコピーしていますか?通常は、同じオブジェクトであるようにretainを使用します。

+0

これは私が持っているものです...私は単語 'コピー'を持っていません、私は確かにそこに '保持'という言葉を持っています..... @property(nonatomic、retain)IBOutlet UILabel * title; – Pavan

+0

その後、UIViewControllerはcopyを使用する必要があります。私はそれがNSStringであるので、私は期待していただろうが、私はエラーがあなたが使ったものを与えるだろうと思った。 – ughoavgfhw

+0

ラベル名を変更すると助けになりました。このご協力ありがとうございます。だから私が正しく理解するならば、UILabelはtitleというプロパティを含むUIViewControllerのサブクラスであり、そのプロパティと競合する変数名titleという名前を付けました。その警告が表示される原因となります – Pavan

3

それは意味:

  • あなたがのUIViewController
  • のサブクラスを持っている、それはあなたが「コピー」属性
  • 親クラスとプロパティを宣言した「タイトル」
  • という名前のプロパティが含まれています(UIViewController)に既に競合する定義を持つ「title」プロパティがあります(「コピー」ではない)
+0

しかし私はhavent? IBOutlet UILabel * title;すべてのiveは完了です.... @property(nonatomic、retain) – Pavan

+0

さて、メッセージが後方にあり、 'copy'を宣言しているのは' UIViewController'です。いずれにしても、ughoavgfhwの示唆しているように、競合を避けるために変数名を変更したいと思うかもしれません。 –

+0

@DavidGelharので、サブクラスの属性はスーパークラスの属性をオーバーライドしますか? – onmyway133

0

そのタイトルがUIViewControllerの定義済みのオブジェクトであることを明確にして、同じ名前の独自のオブジェクトを作成することはできません。他のものを変更して、そのエラーを表示しないことを確認してください。

関連する問題