ETİKETLER

ios

İÇERİK TÜRLERİ

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:

 

Abone ol ios