Komut Satırı Bağımsız Değişkenleri
Komut satırından Objective-C programlarınıza çalıştırıldıklarında bazı değerler aktarmanız mümkündür. Bu değerlerecommand line arguments ve çoğu zaman programınız için önemlidirler, özellikle de bu değerleri kodun içinde kodlamak yerine dışarıdan kontrol etmek istediğinizde.
Komut satırı argümanları main () fonksiyon argümanları kullanılarak işlenir, burada argc iletilen argümanların sayısını ifade eder ve argv[]programa aktarılan her bir argümana işaret eden bir işaretçi dizisidir. Aşağıda, komut satırından sağlanan herhangi bir argüman olup olmadığını kontrol eden ve buna göre harekete geçen basit bir örnek verilmiştir -
#import <Foundation/Foundation.h>
int main( int argc, char *argv[] ) {
if( argc == 2 ) {
NSLog(@"The argument supplied is %s\n", argv[1]);
} else if( argc > 2 ) {
NSLog(@"Too many arguments supplied.\n");
} else {
NSLog(@"One argument expected.\n");
}
}
Yukarıdaki kod derlendiğinde ve tek bir argümanla çalıştırıldığında, örneğin "test etmek", aşağıdaki sonucu verir.
2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing
Yukarıdaki kod, test1 ve test2 gibi iki bağımsız değişkenle derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir.
2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.
Yukarıdaki kod derlendiğinde ve herhangi bir argüman iletilmeden çalıştırıldığında, aşağıdaki sonucu verir.
2013-09-13 03:01:18.333 demo[7640] One argument expected
bu not alınmalı argv[0] programın adını taşır ve argv[1]sağlanan ilk komut satırı argümanına bir göstericidir ve * argv [n] son argümandır. Hiçbir bağımsız değişken sağlanmadıysa, argc bir olacaktır, aksi takdirde bir bağımsız değişken iletirseniz, o zamanargc 2 olarak ayarlanmıştır.
Bir boşlukla ayrılmış tüm komut satırı bağımsız değişkenlerini iletirsiniz, ancak bağımsız değişkenin kendisinde bir boşluk varsa, bu tür bağımsız değişkenleri çift tırnak "" veya tek tırnak "içine koyarak iletebilirsiniz. Program adını yazdıracağımız yukarıdaki örneği bir kez daha yazalım ve ayrıca çift tırnak işareti koyarak bir komut satırı argümanı geçirelim -
#import <Foundation/Foundation.h>
int main( int argc, char *argv[] ) {
NSLog(@"Program name %s\n", argv[0]);
if( argc == 2 ) {
NSLog(@"The argument supplied is %s\n", argv[1]);
} else if( argc > 2 ) {
NSLog(@"Too many arguments supplied.\n");
} else {
NSLog(@"One argument expected.\n");
}
return 0;
}
Yukarıdaki kod derlendiğinde ve boşlukla ayrılmış tek bir argümanla çalıştırıldığında, ancak çift tırnak içinde "Testing1 Testing2" olduğunda, aşağıdaki sonucu verir.
2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.