2012-01-12 9 views
1

私はしばらく前に提示するtableViewControllerを持っています。iphone。 getter of tableViewController

私はそれを合成し、ゲッターを作成している私は.M上で、その後の.h

myTVC *myTable; 

@property (nonatomic, retain) myTVC *myTable; 

に、プロパティとしてそれを作成した

@synthesize myTable = _myTable; 

および

- (myTVC *) myTable { 

    if (_myTable == nil) { 
     _myTable = [[myTVC alloc] init]; 
    } 
    return _myTable; 
} 

それは使用する時間であるとき、私は単に私の知る限りMYTABLEのゲッターは、この時点で実行してtableViewControllerを割り当てるだろう、と思ったが、それが実行されていないとアプリがクラッシュしたことを私に言って

[self presentModalViewController:myTable animated:YES]; 
[myTable release]; 

を行います私は無しtableViewControllerを提示しようとしています...

私は何が欠けていますか?ありがとう。

答えて

1

あなたはmyTableをすれば、あなたはこれをやっているので、あなたの@propertyは、保存されていないに呼び出しmyTableあるごイヴァーasseccingされself.myTableを実行する必要があります。@synthesize myTable = _myTable; IVARコール_myTableを作成します。

あなたはここで2つの間違ったことをしています。あなたのコードを修正するには
は、次の手順を実行します
この行削除:第三の事は、私は、なぜその行わからないんだけど、あなたのコード内でも

[self presentModalViewController:myTable animated:YES]; 
[myTable release]; // <---- this line, remove it to 

奇妙であるmyTVC *myTable;
をして[self presentModalViewController:self.myTable animated:YES];

を行いますcontrollerを@propertyに保存しているのでそこにあります。道
ことで

及び第四UIViewControllerのデフォルトの初期化子は、あなたがそれで行くことに.xibを持っていない場合は、nilを渡すことができ、次の

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle 

です。

あなたが実際に myTableメソッドを呼び出していない

[self presentModalViewController:myTable animated:YES]; 
[myTable release]; 

+0

私は何かを忘れていたことを知っていた!!!!ありがとう。私の知る限り、viewControllerはinitにも反応します。ありがとう!!!!! – SpaceDog

+0

@DigitalRobot NSObjectのすべてのサブクラスはinitに応答しますが、それを使うのは良いことではなく、 'init'を上書きして正しい値で初期化子を呼び出すのを忘れたときに矛盾が生じるかもしれません。 –

+0

よろしくお願いいたします。このフォーラムに投稿している間、リリースラインは間違っていました。他のヒントをありがとう。 – SpaceDog

0

。 Do

self.myTable = [self myTable] 

が最初です。なぜ私は、あなたが単にalloc initを行うのではなく、myTableメソッドが必要なのか分かりません。

関連する問題