Rumah > Soal Jawab > teks badan
1. 在 .h 文件中,例如:
@interface PullToRefreshView : UIView { UILabel *lastUpdatedLabel; UILabel *statusLabel; CALayer *arrowImage; UIActivityIndicatorView *activityView; }
2. 在 .h 文件中,例如:
@property (nonatomic, strong) UIScrollView *scrollView;
3. 在 .m 文件中,例如:
@interface PullToRefreshView @property (nonatomic, strong) NSArray *titles; @end
4. 在 .m 文件中,例如:
@implementation TopicListViewController { PullToRefreshView *pull }
简而言之,是否是
1. 在头文件中的是 public 属性,在 .m 中的是 private 属性?
2. 在 @interface 和 @implementation 中用大括号扩起来的和 @property 有何区别?(除了synthesize方面)
3. 一般情况下应该如何写?
迷茫2017-04-21 11:18:48
Dengan mengandaikan bahawa cara khas menggunakan @private untuk mengisytiharkan pembolehubah tidak dipertimbangkan, dalam objek-c, selagi pembolehubah dan atribut yang diisytiharkan boleh digunakan dalam fail .m yang mengandungi perisytiharan ini.
Sudah tentu, membuat semua perkara awam tidak selaras dengan pengkapsulan dalam reka bentuk berorientasikan objek Pembolehubah dan atribut yang ditulis secara langsung dalam .m adalah untuk menyembunyikan maklumat dan memastikan pengkapsulan nama rasmi kaedah ini ialah Category dianggap kaedah yang diperlukan untuk menulis object-c lib.
Jadi, jawapan kepada semua soalan:
天蓬老师2017-04-21 11:18:48
Apa yang ditulis terus di dalam {} ialah pembolehubah contoh , dan apa yang ditulis dengan @property di hadapan ialah atribut . Untuk atribut, obj-c akan menjana pembolehubah tika secara automatik dan kemudian apabila mengakses atribut (menggunakan kaedah get/set atau menggunakan obj.attr), pembolehubah tika yang dijana secara automatik ini akan digunakan dan melakukan beberapa perkara tambahan lain.
迷茫2017-04-21 11:18:48
@Huan Du sudah mengatakannya dengan baik, mari bercakap tentang tabiat penggunaan saya
1. Daripada menggunakan ivar, isytiharkan @property dalam Sambungan Kelas, supaya anda boleh menggunakan self.xxx secara dalaman untuk mendapatkan/menetapkan nilai dan kod akan kelihatan lebih selesa.
2. Dalam fail pengepala, hanya isytiharkan kaedah/sifat yang boleh dilihat oleh dunia luar, supaya kandungan fail pengepala adalah sekecil dan sejelas mungkin. Jika terdapat sifat baca-sahaja secara luaran tetapi boleh baca-tulis secara dalaman, harta itu boleh diisytiharkan semula sebagai tulis baca dalam Sambungan Kelas.
高洛峰2017-04-21 11:18:48
Anda boleh menggunakan @private di hadapan instance
Pendekatan umum saya, yang juga merupakan format kod yang dijana secara automatik oleh XCode, ialah menulis awam sebagai @property dan meletakkannya dalam fail .h, dan peribadi sebagai
@interface Foo () @property Bar bar; @end
Letakkannya dalam fail .m.
Kurungan kosong adalah kategori Anda boleh membiarkannya kosong atau menulisnya sebagai tersembunyi Secara ringkasnya, kelas lain tidak akan dapat melihat sifat ini.