0

私はアプリ開発の初心者で、最初の実際のアプリに取り組んでいます。ヘッダー ファイルのプロパティ変数を理解していると思っていましたが、ここで何が起こっているのかわかりません...解決策はありますが、なぜそれが機能するのかわかりません。

別の ViewController から String を渡し、それを自分のプロパティ Variable に書きました。

ViewController.h:

@property(weak, nonatomic) NSString *Gender;

これで、私の viewDidLoad ( ViewController.m ) が開始されます。

- (void)viewDidLoad{ [super viewDidLoad];

self.TestLabel.text = _Gender;  ...}

すべて問題なく、ラベルに文字列が表示されます。しかし、ボタン「リセット」を押すと(まだViewController.m):

- (IBAction)ButtonReset:(id)sender { [self viewDidLoad] }

すべてが以前と同じように機能しますが、ラベルが空で、文字列が存在しないように動作します。

何かを試して思いついた解決策:

ViewController.m にグローバル変数を追加する

NSString *boygirl;

次に、元のコードを次のように変更します。

- (void)viewDidLoad{ [super viewDidLoad];   
boygirl = _Gender;
self.TestLabel.text = boygirl; ...}

... なぜそれが機能するのですか? もっとエレガントな方法はありますか?元のコードで Gender を呼び出せない場合...なぜ boygirl は再び Gender を取得できるのでしょうか?

どうもありがとうございました!

4

1 に答える 1

3

プロパティは「弱い」と宣言されています。つまり、同じ文字列への参照が他になくなるとすぐに、プロパティは nil に設定されます。「強い」という意味だったようです。

また、viewDidLoad を自分で呼び出さないでください。また、プロパティ名は小文字で始める必要があります。これらはあなたの問題の原因ではありませんが、早い段階で学ぶべき良いことだと思います。

于 2013-03-03T00:20:14.640 に答える