ETİKETLER
ios
Diziler ve Sözlük Nesneleri
DEĞİŞTİRİLEBİLİR ve SABİT DİZİLER
Objective C’de dizi nesneleri değiştirilebilir (mutable) ve sabit (immutable) türde olmak üzere iki çeşittir. Sabit dizi nesneleri, NSArray sınıfı kullanılarak oluşturulur. Değiştirilebilir dizi nesneleri ise NSMutableArray sınıfı yardımı ile oluşturulur. Değiştirilebilir dizi nesnelerinde ilk değer atandıktan sonra değişiklik yapılabilir; sabit dizi nesnelerinde ise ilk değer atamasından sonra bir daha değişiklik yapılamaz.
#ifndef Komutu
Çalışma biçimi #ifdef komutunun tersidir. Belirtilen makro tanımlanmamışsa bir işlemler grubu yerine getirilir. Yazılış biçimi,
#ifndef Makro_Adı
şeklindedir. Eşdeğeri ise,
#if !defined(Makro_Adı)
şeklinde yazılabilir. #elif komutu ise else if anlamındadır.
ÖRNEK:
#ifdef Komutu
Belirtilen bir makro tanımlanmış ise bir işlemler grubunu yerine getirir. Yazılış biçimi;
#ifdef Makro_Adı
şeklindedir. Eşdeğeri ise;
#if defined(Makro_Adı)
şeklinde yazılabilir.
Şarta Bağlı Derleme İşlemi: #if Komutu
Objective-C ön işlemcisi, #if komutu sayesinde bazı Objective-C program satırlarının bir şarta bağlı olarak derlenmesine olanak sunar. Bu olanak aşağıdaki durumlarda son derecede yararlıdır:
Dosya İçeriklerini Programa Katma: include Komutu
Geliştirici #include komutuyla, başlık dosyaları (header files ya da .h uzantılı dosyalar) içinde tanımlanmış çeşitli standart C fonksiyonlarını ya da makrosunu kendi programı içine katabilir. #include komutuyla, standart fonksiyonlar dışında kullanıcının kendi tanımladığı ya da başka programcılar tarafından tanımlanmış ve bir başlık dosyasına yerleştirilmiş fonksiyonlar da çalıştırılan C programı içine katılabilir.
Makro Tanımın İptal Edilmesi: undef Komutu
Bir makro tanımlandıktan sonra aynı isimdeki bir makronun tanımlanması, ancak yeni tanımlanacak makronun önceden tanımlanmış olanla her açıdan aynı olmasıyla mümkündür. Aksi halde hata oluşur.
Belirli bir isimle makro tanımlanacağı zaman bu tür bir makronun daha önceden tanımlanmış olup olmadığı hakkında güvenilir bir bilgi yoksa, yapılacak en iyi şey bu isimdeki bir makro tanımını önce iptal edip sonra yeniden tanımlamaktır.
Örneğin;
#undef PI
#define PI 3.14159
Makro Tanımlamada # ve ## Operatörleri
# Operatörü
Makro tanımlarken kullanılan biçimsel parametrenin önüne # sembolü yerleştirilirse, makro çağrıldığında bu biçimsel parametreye karşılık gelen gerçek parametre bir stringe dönüştürülür.
ÖRNEK:
#define BASLIK(FORMAT,DEGER) \
NSLog(@#FORMAT,DEGER)
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int i=10;
BASLIK(\ni=%i ,i);
[pool drain];
return 0;
}
Gerçek Parametrelerde Bir Dizi İfadenin Kullanılması
Makro çağrımında makroya gönderilen parametre, birbirini izleyen hesaplama ifadelerinden oluşabilir. Bu durumda ek olarak bir parantez kullanmalı ve birbirini izleyen ifadeleri virgüllerle ayırmalıyız.
ÖRNEK:
Önceden Tanımlanmış Değerlere Referans Verme
Objective C ön işlemcisi, her direktifi satır bazında işleme soktuğu için, define direktifi içinde daha önceki bir define ile tanımlanmış bir değere referans verilebilir. Örneğin;
#define BIRIM_UCRET 5
#define NORMAL 40
#define FAZL_MES_SAAT_UCR 8
#define HAFTALIK_CALISMA 47
#define UCRET BIRIM_UCRET*NORMAL+\
(HAFTALIK_CALISMA\
-NORMAL)*FAZL_MES_SAAT_UCR
Makrolarda Argümanlar
#define MakroAdı(Argüman1,Argüman2,..Argüman n) MakroKomutları
şeklindeki bir ifade, argüman kullanan bir makro tanımını göstermektedir.
ÖRNEK: