Objective-C'de Property Attributeleri nelerdir? Bu makalede Objective-C programlama dilinde Property Attributeleri'nin anlamları ve kullanımları hakkında detaylı bilgi bulabilirsiniz Keşfedin!

Objective-C, nesne yönelimli bir programlama dilidir ve nesnelere ait özellikleri tanımlamak için değişkenler kullanır. Bu özellikler, sınıflar tarafından kullanılır ve ilgili nesnelerin işlevlerini yerine getirmelerine yardımcı olurlar.
Objective-C, bu özellikleri belirlemek için property attributeleri kullanır. Property attributeleri değişkenlere belirli nitelikler ekleyerek, özelliklerinin nasıl kullanılabileceğini tanımlar. Bu makalede, Objective-C'de kullanılan property attributeleri ve özellikleri incelenecektir.
Strong Attributu
Objective-C programlama dilinde, nesne özelliklerinin tanımlandığı değişkenlere property adı verilir. Bu özellikler, bir nesnenin durumunun barındırılmasına yardımcı olur. Nesneleri hafızada saklamak için strong attributu kullanılır. Strong attributu, özellik ile ilişkili bir örnekleme yapıldığında, nesnenin hafızada kalması için kullanılır. Yani bir nesne ile ilişkili bir özellik tanımlandığında, strong attributu sayesinde nesnenin hafızada barındırılmasını sağlar.
Strong attributu, diğer nesnelerin, özellikle ilişkili bir örnekleme yapmaktan önce nesnenin değerini yok etmesini engelleyerek, özelliğin güvenliğini sağlar. Bu özellik, özellikleri veya nesneleri birbirine bağlayan ek bir işlem yapmadan, nesnenin hafızada saklanmasına izin verir. Yani, bir özellik ve ona bağlı bir nesne olduğunda, strong attributu sayesinde bu nesne, özellikle ilişkili olduğu sürece hafızada kalır.
Bu özellik, özellikle ilişkili olduğu nesneyi mutlaka korur ve olası bir çökmeye veya cihaz yeniden başlatmasına karşı tampon oluşturur. Strong attributu'nun kullanımı önemlidir çünkü nesne, özellik hala kullanılmayan bir değişken ise, hafızada durmasına gerek olmadığı durumlarda, hafızada yer kaplayabilir. Hafızanın dolduğu durumlarda, uygulama çökebilir.
Weak Attributu
Objective-C'de kullanılan property attributelerinden biri olan Weak Attributu, nesnelerin hafızaya alınması sırasında ortaya çıkabilecek diğer kod parçaları tarafından yok edilebilecek durumlarda kullanılır. Özellikle ARC kullanımda çok önemlidir. Weak Attributu sayesinde özellik, olası bir nesne kaybının önüne geçilerek istenmeyen hata durumları engellenir.
Örneğin, bir nesneye yalnızca weak referansı içeren bir özellik tanımlanmışsa, nesnenin hafızası zorlandığında bu özellik otomatik olarak nil değeri alacaktır ve böylece özelliğe yapılan erişimi engelleyecektir. Weak Attributu'nun tek dezavantajı, weak olan nesnenin ömrünün bitmeden önce özellek başka bir referansla güçlü bir şekilde kopyalanırsa, çalışma zamanı hatası verebilir.
Weak Attributu, hafızada yer açmak için bir özelliğin nesnesini kaldırmak istediğimiz durumlarda kullanışlıdır. Ayrıca, weak varlıkların otomatik olarak nil atanabilmesi sayesinde boş bir örnek olmadığı garanti edilir.
Buna karşılık, Strong Attributu'nun weak'ten farkı, nesne oluşturulurken kesin bir şekilde tanımlanıp, o nesneyle özellik arasında herhangi bir orta yol oluşturulmamasıdır. Bu özellik, örneklendiğinde değeri otomatik olarak tutar ve nesne bellekten kaldırılmadan önce gözetilir.
Assign Attributu
Objective-C programlama dilinde, property'ler nesne özelliklerinin tanımlandığı değişkenlerdir. Bir özelliği oluştururken, ona özellik için geçerli olan property attributeleri de tanımlanabilir.
Bir diğer property attributu olan Assign Attributu, özelliğin hafızaya direkt olarak atanmasını sağlar. Özelliğin hafızada kalması için ataması yapılır ve bu hafıza işlemi yapılırken strong veya weak olmasına bakılmaz. Genellikle primitive tiplerin ve C tiplerinin property'leri için kullanılır. Ayrıca, nesne özellikleri içinde kullanılabilir.
Assign attribute'in kullanımı için özelliğin tanımlandığı yerde tanımlama yapılması yeterli olacaktır. Örneğin, "Deger" adında bir özellik oluşturulması gerektiğinde:
Kod | Açıklama |
---|---|
@property (assign) int deger; | Deger adlı property assign attribute ile tanımlandı. |
Bir property'ye assign attribute vermek programcıya özellikle ayrıca bir eylem yapmalarını gerektirmez. Bu özellik kendisine verilen değeri hafızaya kaydederek işlemini tamamlar.
Copy Attributu
Copy Attributu bir nesnenin kopyasını yaratır ve özellik ile ilişkilendirir. Bu özellik birçok durumda gayet kullanışlı olabilir. Örneğin, bir nesneden oluşturduğumuz kopyayı değiştirerek kaydedebiliriz, orijinal nesne verisi korunmuş olur.
Copy Attributu kullandığımız durumlarda, özelliği kullanmadan önce kopisini yaratma fonksiyonunu yazmamız gerekmektedir. Yaratılan özelliğin kopyası, orijinal nesne ile bağımsızdır. Orijinal nesne ile kopyası arasında değişiklik yapmak birbirlerini etkilemez.
Copy Attributu aynı zamanda hafıza yönetimi için de önemlidir. Çünkü Copy Attributu sayesinde, birbirine çok benzeyen nesnelerin bellek adreslerindeki farklar iyice açığa çıkar. Bu da çok benzer nesnelere ait hafıza sorunlarını çözmeyi kolaylaştırır.
Özetle, Copy Attributu kullanılarak bir yeni nesne yaratılıp orijinal nesne ile bağımsız hale getirilebilir. Bu durum farklı nesnelerde hafıza yönetimi sorunlarını da çözülebilir.
Retain Attributu
Retain Attributu, Objective-C programlama dilinde nesne özellikleri tanımlanırken kullanılan bir property attributudur. Retain Attributu özelliğe sonradan atandığında hafızada tutulmasını sağlayarak özelliği hatırlar. Bu attribute, nesnenin özelliğinin bellekte güvenli bir şekilde saklanmasını garanti eder.
Retain Attributu, strong ve weak attribute'lerin yaptığı işlevler arasında bir şekilde yer alır. Nesne özelliğine bir kere atandığında hafızada tutulabilmesi için Retain Attribute kullanılır. Retain Attributu, bir nesne özelliğinin hafızada tutulabilmesi için strong Attributu'nu kullanır. Bu özellik sayesinde, iki farklı nesne özelliği aynı bellek bölgesini paylaşabilir ve bunların verileri kendi belleklerinde saklanabilir.
Bir nesnenin Retain Attributu'na sahip bir özelliğe atanması, özelliğin bellekte güvenli bir şekilde saklanmasını sağlar. Bu sayede, özellik nesnesi sonradan herhangi bir yere taşındığında veya farklı bir sözdizimi gerektirdiğinde bile güvenli olarak kullanılabilir. Retain Attributu aynı zamanda, bir nesnenin özelliğe çift atama yapmasını engelleyerek programlama hatalarını azaltır ve kodun düzgün bir şekilde çalışmasını sağlar.
Atomic Attributu
Objective-C programlama dilindeki property attributelerinden birisi olan Atomic Attributu, özelliğe aynı anda birden fazla thread tarafından erişilmesini engellemek için kullanılır. Bu sayede, özelliğin threadler arasında uyumsuzluk yaşamasının önüne geçilir.
Özellikle, uygulama içerisindeki verilerin güncelleme gereksinimi duyduğu durumlarda kullanışlıdır. Eğer özellik paralel kodlar tarafından paylaşılıyorsa, bazı threadler özelliği güncellemeden önce diğer threadler tarafından okunabilir ve bu durumda hatalara neden olabilir. Ancak, Atomic Attributu kullanarak bu durumun önüne geçilebilir.
Bununla birlikte, Atomic Attributu kullanımı performans açısından dezavantajlı olabilir. Çünkü, özelliğin sadece bir thread tarafından erişilmesi sağlandığı için, bu özellik de veri okunurken işlemci zamanı kaybına neden olabilir. Ancak, paralel işlemlerde kullanılmak üzere tasarlanmış programların performansı artırmak için birden çok thread kullanması beklenemeyeceğinden, Atomic Attributu işlevsel bir özelliktir.
Non-Atomic Attributu
Objective-C programlama dilinde nesne özelliklerinin tanımlandığı değişkenler property olarak kullanılır. Property’lerde tanımlanabilen özelliklerden biri de Non-Atomic Attributudur. Bu özellik, özelliği paralel kodlara açık olarak belirler ve paralel çalışmayı destekler.
Bu özellik sayesinde, aynı anda birden fazla işlem yapılabilir ve özelliklerdeki değişiklikler gerçek zamanlı olarak takip edilebilir. Bu sayede programlar daha verimli hale gelir ve geliştirme sürecinde birçok kolaylık sağlar.
Örneğin, bir birden fazla kullanıcının aynı anda farklı işlemler gerçekleştirdiği bir uygulama düşünelim. Non-Atomic Attributu kullanılmayan bir özellikte, kullanıcıların yaptığı işlemler birbirlerini etkileyebilir ve veri kaybı yaşanabilir. Ancak, Non-Atomic Attributu kullanılarak özelliklerin paralel çalışması desteklenir ve kullanıcılar farklı işlemler yapabilirler.
ReadOnly Attributu
ReadOnly Attributu, Objective-C programlama dilinde oldukça sık kullanılan bir property attributudur. Bu attributu kullanarak, bir özelliğin değerinin değiştirilemeyeceğini ve yaklaşık olarak sabit olduğunu belirtebiliriz. Böylece, sadece okunabilir ve değiştirilemez bir özellik yaratmış oluruz.
ReadOnly Attributu, özellikle sabit özellikler için son derece kullanışlıdır. Örneğin, pi sayısı hepimizin bildiği sabit bir sayıdır. Eğer pi sayısını bir özellik olarak tanımlarsak, ReadOnly Attributu ile birlikte kullanarak, bu sayının değerinin herhangi bir yerde değiştirilemeyeceğini garanti altına alabiliriz.
Tabii ki, ReadOnly Attributu ile tanımlanan bir özellik sadece okunabilir olduğu için, başka property attributeleriyle birlikte kullanılabilecekleri durumlar sınırlıdır. Ancak, bu attributu doğru bir şekilde kullanarak, programlarımızı daha güvenli ve sağlam bir şekilde yazabiliriz.
Ayrıca, ReadOnly Attributu ile tanımlanan bir özelliğin değeri, sadece bir kere atanabilir. Yani, programımızın herhangi bir noktasında bu özelliğin değerini değiştirmeye çalışırsak, hatayla karşılaşırız. Bu yüzden, bu attributu kullanmadan önce, özelliğin gerçekten sabit olmasının gerektiğini iyice düşünmeliyiz.
Sonuç olarak, ReadOnly Attributu, Objective-C programlama dilinde oldukça önemli bir property attributudur. Sabit özellikler için kullanmak oldukça kullanışlıdır ve özelliklerin güvenliğini sağlamak için de etkili bir yoldur.
Readwrite Attributu
Readwrite Attributu, Objective-C programlama dilinde sıklıkla kullanılan ve bir özelliğin hem okunabilir hem de yazılabilir olduğunu belirten bir attributudur. Bu özellik, örneğin bir nesnenin çeşitli parametreleri veya durumları hakkında değerlerin hem okunması hem de güncellenmesi gerektiğinde oldukça kullanışlıdır.
Readwrite Attributu, diğer özellik attributeleri gibi değişkenlerin ve nesnelerin tanımlandığı değişkenlerin önünde kullanılması gerekir. Bu attributu kullandığınızda, özelliğe hem get hem de set işlemlerini gerçekleştirmek için iki yöntem, yani getter ve setter yöntemleri tanımlamanız gerekmektedir. Bu yöntemler, özelleğe erişim sağlamak ve özellik değerlerini okumak veya değiştirmek için kullanılırlar.
Örneğin bir öğrenci nesnesi için, öğrencinin ad, soyad, yaş gibi özelliklerini içeren bir özellik belirliyorsunuz. Bu özelliklerin öğrenci kaydı oluşturulduktan sonra hem okunup hem de güncellenmesi gerektiğinde Readwrite Attributu kullanılır. Bu şekilde, oluşturulan öğrenci nesnesinin herhangi bir alanını okuyabilir veya güncelleyebilirsiniz.
Aşağıdaki örnek tablo, bir öğrenci nesnesi için Readwrite Attributu kullanımını göstermektedir.
Öğrenci Özelliği | Özellik Tipi | Attributu | Açıklama |
---|---|---|---|
Adı | String | Readwrite | Bir öğrencinin adı strig tipinde tanımlanır ve hem okunabilir hem de yazılabilir özellik olarak belirlenir. |
Soyadı | String | Readwrite | Bir öğrencinin soyadı strig tipinde tanımlanır ve hem okunabilir hem de yazılabilir özellik olarak belirlenir. |
Yaşı | Int | Readwrite | Bir öğrencinin yaşı int tipinde tanımlanır ve hem okunabilir hem de yazılabilir özellik olarak belirlenir. |
Sonuç olarak, Readwrite Attributu, önemli bir ve sık kullanılan bir attributu olarak Objective-C programlama dilinde özelleklerin okunabilmesinin yanı sıra güncellenebilmesini sağlar. Bu attributu kullanarak, programınızdaki nesnelerin veya değişkenlerin belirli özelliklerini güvenle okuyabilir veya değiştirebilirsiniz.
Getter ve Setter Attributeleri
Getter ve Setter Attributeleri, Objective-C'deki property'lerin değerlerine erişmek ve değiştirmek için kullanılırlar. Genel olarak, özelliğe doğrudan erişilemez, ancak get ve set metodları kullanılarak özelliğin değeri okunabilir ve değiştirilebilir.
Getter ve Setter Attributeleri özelliğin kullanımına müdahale edebilir or altında yatan özellik değerini değiştirebilir. Bununla birlikte, bu tür bir müdahale özelliğin işleyişini değiştirebilir ve ilgili kodda hatalara neden olabilir.
Getter Attributu | Özelliğin değerini okumak için kullanılır |
Setter Attributu | Özelliğin değerini değiştirmek için kullanılır |
Genellikle, property'ler için get veya set metodları tanımlıdır. Bu metotlar, özellik ile ilişkili çağrıldığı zaman çalıştırılır.
- Getter Metodu: Genellikle, özelliğin değeri okunabilir ve geri döndürülür. Getter metodunu belirleyerek özelliğin değeri okunabilir.
- Setter Metodu: Genellikle, özelliğin değeri değiştirilebilir. Setter metodunu belirleyerek özelliğin değeri değiştirilebilir.
Getter ve Setter Attributeleri genellikle property'lerin tutulduğu sınıfın .m dosyasında tanımlanır.