簡體   English   中英

我應該在iOS中設置ivars屬性嗎?

[英]Should I make my ivars properties in iOS?

只是當您認為自己了解某事時,您才不明白! :)

我知道如果將變量設為屬性,則可以在類中的任何位置訪問它,甚至可以從該類外部進行設置。

我想如果我不需要它,我可以把它變成一個ivar。 所以我有一個帶有大約5個UILabel的viewcontroller。 因此,在其viewDidLoad中,我說:

pharmacyName.text = self.receivedLocation.name;
    pharmacyTel1.text = @"556-7843";
    pharmacyTel2.text = @"991-2345";
    pharmacyTel3.text = @"800-0001";

當我在.h文件中這樣聲明它們時:

@interface DetailViewController : UIViewController{
    IBOutlet UILabel *pharmacyName;
    IBOutlet UILabel *pharmacyTel1;
    IBOutlet UILabel *pharmacyTel2;
    IBOutlet UILabel *pharmacyTel3;
}

@property (nonatomic,strong) MyLocation *receivedLocation;

@end

否。將ivar創建為屬性不是強制性的。 如果您不想在課外訪問它,請按原樣使用。 在ARC中,您還可以如下聲明您的IBOutlet:

@interface DetailViewController : UIViewController{
    __weak IBOutlet UILabel *pharmacyName;
    __weak IBOutlet UILabel *pharmacyTel1;
    __weak IBOutlet UILabel *pharmacyTel2;
    __weak IBOutlet UILabel *pharmacyTel3;
}

這將保留一周的網點參考。 這是__weak and strong的細節

您始終可以采用多種方法來處理編程任務和標准。 我們小組已經開始使用一些編碼標准。 我們喜歡將不能從類(和協議語句)外部訪問的實例變量放在.m文件的私有接口中,如下所示:

@interface DetailViewController() {
    NSString *value_;
}

@end

我們也喜歡用@property我們的實例變量實例,並宣布與私營接口以及這樣的:

@interface DetailViewController() {
}

@property (nonatomic, strong) IBOutlet UIlabel *pharmacyName;

@end

然后在您的代碼中,將其稱為self.pharmacyName 它與自動完成功能以及獲取和設置效果很好。 同樣,當您遇到線程安全問題時,非原子性強行為也會派上用場。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM