1

次のようにペン先をロードしています:

ContentViewController *theController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil];

ラベルが付いているもの。ビュー コントローラーには、UILabel の IBOutlet と保持および合成変数の @property があります。上記のようにペン先を別のクラスからロードし、ラベルのテキスト プロパティを次のように参照すると:

theController.myLabel.text = @"testing...";

myLabel のアドレスは 0x0 です。割り当て前のテキストは「無効」です。割り当て後のタイプは ContentViewController です。メモリ管理に問題があります。何か案は?

4

3 に答える 3

3

接続は init 呼び出しですぐには行われません。メイン ビューは、View Controller のviewプロパティにアクセスするまで読み込まれません。これにより、他のすべての IBOutlets も設定されます。ビューが読み込まれる前に IBOutlet にアクセスしようとすると、nil になります。通常、割り当てコードは に入る必要があります-viewDidLoad。ビューを画面に追加する前に何かをする必要がある場合は、IBOutlets に何かを割り当てる前にビューにアクセスするだけです。

theController.view;
theController.myLabel.text = @"testing...";
于 2009-05-24T14:12:13.660 に答える
0

にコードを書いていますか?

-(void)loadView {  }

方法?

その場合、IBOutlet オブジェクトが割り当てられていません。
この関数にコメントしてみてください。
そして、この関数を起動する必要がある場合は、そのviewControllerを呼び出すためのloadNibnamed:メソッドを呼び出します。

于 2011-03-24T07:47:07.600 に答える
0

ViewController はオンデマンドでビューのみをロードします。getMyLabel割り当ての暗黙的な呼び出しにより、ビューが読み込まれ、アウトレットが接続されます。型エラーについては、なぜmyLabel型がContentViewController. インターフェイス ビルダーで接続を確認し、適切に接続されていることを確認する必要があります。

于 2009-05-23T04:50:29.100 に答える