1

一部のチュートリアルで、次のテキスト フィールドが 2 回宣言されている理由を理解するのに苦労しています。

.h ファイル内:

# include <UIKit/UIKit.h>

@interface MyViewController : UIViewController {

    UITextField *name;  // <----- What do I need this for? Is it the same as below?
}

@property (nonatomic, strong) IBOutlet UITextField *name;  // <----- Same as this?

@end

最初はこれはインスタンス変数のようなものだと思っていましたが、.m ファイルでここでしか宣言されていませんよね?

.m ファイル

#import "MyViewController.h"

@implementation UIViewController {

    NSString *myString; // <----- This is an instance variable, right?

}

「UITextField *name;」とは 為に?@property を前に付けた 2 番目のものだけが必要ではないですか? ありがとうございました。

4

2 に答える 2

1

iPhone OS または 64 ビット Mac OS X をターゲットにしている場合は、プロパティに ivar を定義する必要はありません。Dynamic ivarsを見てみましょう: 壊れやすい基本クラスの問題を解決する

于 2012-12-11T08:48:12.043 に答える
1

This is an old way, just use property is OK. If you declare both, you must use @synthesize name; in your .m file to make self.name same as name. XCode4.2 auto synthesize name = _name. So use self.name as much as possible in your .m file.

Variable in {} just use for internal or private, when you don't want implement setter and getter.

于 2012-12-11T08:55:15.520 に答える