Sifat dan Pemboleh Ubah Tika
Fahami perbezaan antara sifat dan pemboleh ubah tika serta cara menggunakannya untuk menyimpan data dalam objek.
Sifat dan Pemboleh Ubah Tika ialah pelajaran Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan merangkumi sejumlah 4 pelajaran.
Data dalam Objek Anda
Apabila anda mencipta objek dalam Objective-C, objek tersebut biasanya perlu menyimpan maklumat. Bayangkan objek Person yang perlu menyimpan nama dan umur.
Data ini disimpan menggunakan sama ada pemboleh ubah instans atau sifat. Kedua-duanya menyimpan data, tetapi menawarkan tahap kawalan dan keselamatan yang berbeza.
Pemboleh Ubah Instans (IVar)
Pemboleh ubah instans (sering dipanggil ivar) ialah pemboleh ubah yang diisytiharkan terus dalam blok antara muka atau pelaksanaan kelas. Pemboleh ubah ini menyimpan data sebenar untuk sesuatu objek.
- Ia seperti ruang simpanan terus di dalam objek anda.
- Anda boleh mengaksesnya terus daripada kaedah objek tersebut.
- Akses terus dari luar objek biasanya tidak digalakkan demi amalan pengaturcaraan berorientasikan objek yang baik.
Mengisytiharkan Pemboleh Ubah Instans
Anda mengisytiharkan pemboleh ubah instans dalam blok @interface, biasanya di dalam kurungan berombak {}. Secara lalai, pemboleh ubah ini ialah @protected.
Cuba jalankan contoh mudah ini:
#import <Foundation/Foundation.h>
@interface MyObject : NSObject {
// This is an instance variable
int myValue;
}
- (void)printValue;
@end
@implementation MyObject
- (void)printValue {
NSLog(@"My value is: %d", myValue);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
MyObject *obj = [[MyObject alloc] init];
obj->myValue = 10; // Direct access (usually avoided externally)
[obj printValue];
}
return 0;
}Memperkenalkan Sifat (<code>@property</code>)
Walaupun ivar menyimpan data, sifat menyediakan cara terkawal untuk mengakses data tersebut. Pengisytiharan sifat menjana kaedah pengambil dan penetap secara automatik.
- Pengambil: Kaedah untuk mendapatkan nilai (contohnya,
name). - Penetap: Kaedah untuk mengubah nilai (contohnya,
setName:).
Ini penting untuk pengkapsulan serta pengurusan cara data dibaca dan ditulis.
Mengisytiharkan Sifat
Anda mengisytiharkan sifat menggunakan arahan @property dalam blok @interface. Arahan ini memberitahu pengkompil supaya menyediakan kaedah pengakses.
Contohnya, @property (assign) int age; mengisytiharkan sifat age.
#import <Foundation/Foundation.h>
@interface Person : NSObject
// Declare a property for name and age
@property (strong, nonatomic) NSString *name;
@property (assign, nonatomic) int age;
- (void)introduce;
@end
@implementation Person
// @synthesize name = _name; // Not strictly needed in modern Objective-C
// @synthesize age = _age; // The compiler synthesizes automatically
- (void)introduce {
NSLog(@"Hello, my name is %@ and I am %d years old.", self.name, self.age);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] init];
person.name = @"Alice"; // Using dot syntax (setter)
person.age = 30; // Using dot syntax (setter)
[person introduce]; // Accessing via getter inside method
}
return 0;
}Atribut Sifat: Memori
Properties boleh mempunyai atribut yang mempengaruhi cara kaedah accessornya dijana, terutamanya berkaitan pengurusan memori (walaupun ARC sepenuhnya akan dibincangkan kemudian).
strong(lalai untuk objek): Mengekalkan rujukan kuat supaya objek tidak dinyahperuntukkan.weak: Mencipta rujukan lemah, yang membolehkan objek dinyahperuntukkan jika tiada rujukan kuat wujud. Menghalang kitaran pengekalan.assign(lalai untuk jenis primitif): Digunakan untuk jenis bukan objek (int,float,structs). Hanya menetapkan nilai.copy: Mencipta salinan objek dan bukannya mengekalkan objek asal. Berguna untuk objek boleh ubah sepertiNSStringbagi menghalang pengubahsuaian dari luar.
Atribut Property: Keatomikan
Satu lagi atribut penting berkaitan dengan keselamatan utas:
atomic(lalai): Memastikan kaedah getter dan setter selamat untuk utas. Ini bermaksud nilai lengkap sentiasa dikembalikan atau ditetapkan, walaupun beberapa utas cuba mengaksesnya secara serentak.nonatomic: Tidak menjamin keselamatan utas untuk accessor. Pilihan ini lebih pantas dan sering digunakan apabila anda mengurus keselamatan utas secara manual atau tidak memerlukannya untuk property tertentu.
Dalam kebanyakan pembangunan iOS, nonatomic lebih digemari atas sebab prestasi, melainkan property tersebut memerlukan keselamatan utas tertentu.
Sintaks Titik berbanding Sintaks Mesej
Properties membolehkan anda menggunakan sintaks titik (contohnya, object.name), iaitu singkatan mudah untuk memanggil kaedah getter dan setter.
object.nameadalah setara dengan[object name](getter).object.name = @"Bob";adalah setara dengan[object setName:@"Bob"](setter).
Kedua-duanya sah, tetapi sintaks titik sering digunakan untuk properties bagi meningkatkan kebolehbacaan.
#import <Foundation/Foundation.h>
@interface Car : NSObject
@property (strong, nonatomic) NSString *model;
@property (assign, nonatomic) int year;
@end
@implementation Car
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *myCar = [[Car alloc] init];
// Using dot syntax to set values
myCar.model = @"Tesla Model 3";
myCar.year = 2023;
// Using dot syntax to get values
NSString *carModel = myCar.model;
int carYear = myCar.year;
NSLog(@"Car: %@, Year: %d", carModel, carYear);
// Equivalent message syntax for setting
[myCar setModel:@"Ford F-150"];
[myCar setYear:2020];
// Equivalent message syntax for getting
NSString *newModel = [myCar model];
int newYear = [myCar year];
NSLog(@"New Car: %@, Year: %d", newModel, newYear);
}
return 0;
}IVar berbanding Properties: Bila Perlu Digunakan?
Secara amnya, anda patut menggunakan properties untuk hampir semua penyimpanan data yang perlu diakses dari luar objek, atau yang perlu diakses secara konsisten dari dalam objek.
- Gunakan properties untuk akses awam (atau peribadi) kepada data, dengan memanfaatkan kaedah accessor dan atributnya.
- Gunakan pemboleh ubah tika mentah (ivar) hanya jika anda perlu menyimpan data yang tidak boleh diakses secara langsung, termasuk oleh subkelas, atau untuk pengoptimuman prestasi yang sangat khusus apabila anda benar-benar tidak mahu overhed accessor (jarang berlaku).
Objective-C moden dengan ARC sangat mengutamakan properties.
Semakan Pantas Property
Pertimbangkan pengisytiharan property Objective-C berikut:
@property (nonatomic, copy) NSString *productName;Antara pernyataan berikut, yang manakah TRUE tentang property ini?
Imbas Kembali: IVars & Properties
Kita telah meneroka cara objek Objective-C menyimpan data menggunakan pemboleh ubah tika dan properties.
- Pemboleh ubah tika (ivar) ialah lokasi penyimpanan langsung dalam objek.
- Properties menyediakan akses terkawal kepada data melalui kaedah getter/setter yang dijana.
- Atribut property utama seperti
strong,weak,assigndancopymengurus memori. atomicdannonatomicmengawal keselamatan utas untuk kaedah accessor.- Sintaks titik ialah cara mudah untuk mengakses properties dan diterjemahkan kepada panggilan kaedah.
- Properties ialah cara yang disarankan untuk mengurus data objek dalam Objective-C moden.
Pelajari Objective-C dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Sifat dan Pemboleh Ubah Tika” percuma?
Ya — teks penuh “Sifat dan Pemboleh Ubah Tika” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan, tingkat taraf kepada CoddyKit PRO. Kursus Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Sifat dan Pemboleh Ubah Tika”?
Fahami perbezaan antara sifat dan pemboleh ubah tika serta cara menggunakannya untuk menyimpan data dalam objek. Anda berlatih Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Sifat dan Pemboleh Ubah Tika” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan ini?
Ya. Setiap pelajaran Pembangunan Objective-C untuk Aplikasi iOS Lama dan Perusahaan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Kelas, Objek dan Kaedah
- Sifat dan Pemboleh Ubah Tika
- Protokol dan Kategori
- Pewarisan dan Penggantian Kaedah