2009-07-27 7 views
1

質問1)基本的な目的-C:このコードはなぜ機能するのですか?

私はナビゲーションベースのアプリケーションを持っています。ここでエントリをクリックすると、そのエントリの詳細が表示された2番目のビューが開きます。

それは私が第一及び第三の文を切り替えた場合、その後、非常に最初の時間私は、項目をクリックし、次のコード

[self.navigationController pushViewController:descriptionController animated:YES]; 
[self.descriptionController.textView setText:[s description]]; 
self.descriptionController.title = [s name]; 

で今働いしかしだ、詳細が表示Loremのイプサムのテキストを示しています。最初の後、期待どおりに動作します。私はそうするのがより正しいと思った。なぜそれはLorem Ipsumを最初の視点で見るのですか?

質問2)

はまた、私のTextView要素は、詳細ビューの一部です。私が持っているビューのための私のコントローラクラスで:

@property(nonatomic, retain) IBOutlet UITextView *textView; 

しかし、私は

@property(nonatomic, copy) IBOutlet UITextView *textView; 

にこれを変更する場合、それがクラッシュ。私はそれがクラッシュするとは思わないが、私はそれがちょうど何のためにメモリを取って新しいインスタンスを作成すると思っている。誰でもこれを説明できますか?私が持っているビューのための私のコントローラクラスで

+0

@Pax:あなたはいつも自分で編集することができますが、私はベストショットをしましたが、Objective-Cについては何も教えていません。 – Eric

答えて

5

@property(nonatomic, retain) IBOutlet UITextView *textView; 

しかし、私は

@property(nonatomic, copy) IBOutlet UITextView *textView; 

にこれを変更する場合、それがクラッシュ。

UITextViewがNSCopyingに準拠していないためです。

7

問題は - [UIViewControllerビュー]であり、そのすべてのサブビューはNIBかloadViewのプログラムで遅延的に生成されます。だから、:あなたが他の行」

[self.descriptionController.textView setText:[s description]]; 
self.descriptionController.title = [s name]; 

//At this point descriptionController.view == nil && textView == nil 
[self.navigationController pushViewController:descriptionController animated:YES]; 
//At this point descriptionController.view and textView are set 

後にスワップに(ビューをロードする)プッシュを押した場合

//At this point descriptionController.view == nil && textView == nil 
[self.navigationController pushViewController:descriptionController animated:YES]; 
//At this point descriptionController.view and textView are set 

[self.descriptionController.textView setText:[s description]]; 
self.descriptionController.title = [s name]; 

だからあなたは(何もしない)ゼロ値に設定したメッセージを送っています、

+0

私はまだ彼らが最初にnilである理由を理解していない、私はすでにviを持っているのでewはインスタンス化される。だから私はまだGUIには見えないメモリ内のオブジェクトを変更しているだけです。 – user145374

+0

ビュー_controller_がインスタンス化されていますが、ビューとサブビューは実際に表示されるまで作成されません(つまり、ナビゲーションコントローラにプッシュされます)。 –

+0

ああ、ありがとうございます – user145374

関連する問題