これはやや基本的な質問ですが、私はstackoverflow.comで非常に多くのドキュメントと質問を読んだあと、まだいくつかの疑問が残っています。いくつかのインスタンス変数をプロパティとして宣言する理由
いくつかのインスタンス変数をプロパティとして宣言する理由を知りたいと思います。
MYViewController.h
@interface MyViewController : UIViewController {
UIButton *btn;
NSString *name;
}
@property (nonatomic, retain) UIButton *btn;
@property (nonatomic, retain) NSString *name;
MyViewController.m
@implementation MyViewController
@synthesize btn;
-(void) viewDidLoad()
{
[btn setTitle:@"Hello" forState:UIControlstaeNormal]; //this is first way where there is no need to declare btn as property
[self.btn setTitle:@"Hello" forState:UIControlstaeNormal]; //this is second way where we do need to decalre btn as property as we are accessing it through self
//Setting value of name
name = @"abc"; //this is first way where there is no need to declare name as property
[self setName:@"abc"; //this is second way where we do need to declare name as property as we are accessing its aetter method through self
}
今、私たちはプロパティとして宣言することなく、BTN変数のgetter/setterメソッドを使用することができたときに知りたい上記のコードでは、プロパティとして宣言する必要があり、何を設定するには良い方法であります"name"の値
私は、インスタンス変数を他のクラスオブジェクトにアクセスさせたい場合は、インスタンス変数として宣言する必要があります。それがプロパティとして宣言されるべき唯一の状況ですか?
基本的には、インスタンス変数をどのような状況でプロパティとして宣言するのか少し混乱します。
お勧めします。 ありがとうございます。
詳細な投稿はThanxです。私は本当に感謝しますが、あなたは私の質問、そして基本的に私の質問で例を挙げて尋ねられる2つの混乱についてより具体的にしてください。 – Aisha
@Kiaraよろしくお願いします。確かに、その明確化では、viewDidLoadの例の文脈では、インスタンス変数にアクセスして設定する方法に最も興味があると思います。 ( '@property(nonatomic、retain)UIButton * btn;' < - この行はプロパティ宣言です)。あなたが提供した実装は明示的にスレッドセーフではありません3)パブリックゲッターとセッターがあります4) 'viewDidLoad'は完全に構築されたクラスインスタンスを使用します(cont) – justin
(cont)5 )あなたは部分的に破壊されたインスタンスを使用していません6)メソッドがオーバーライドされ、再オーバーライドされる可能性があります - この場合はプロパティを介してアクセスします – justin