Argumen Baris Perintah

Dimungkinkan untuk meneruskan beberapa nilai dari baris perintah ke program Objective-C Anda saat dijalankan. Nilai-nilai ini disebutcommand line arguments dan sering kali hal itu penting untuk program Anda, terutama ketika Anda ingin mengontrol program Anda dari luar alih-alih mengkodekan langsung nilai-nilai tersebut di dalam kode.

Argumen baris perintah ditangani menggunakan argumen fungsi main () di mana argc mengacu pada jumlah argumen yang diteruskan, dan argv[]adalah array pointer, yang menunjuk ke setiap argumen yang diteruskan ke program. Berikut adalah contoh sederhana, yang memeriksa apakah ada argumen yang diberikan dari baris perintah dan mengambil tindakan yang sesuai -

#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");
   }
}

Ketika kode di atas dikompilasi dan dijalankan dengan satu argumen, katakan "pengujian", itu menghasilkan hasil sebagai berikut.

2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing

Ketika kode di atas dikompilasi dan dijalankan dengan dua argumen, katakanlah testing1 dan testing2, itu menghasilkan hasil sebagai berikut.

2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.

Ketika kode di atas dikompilasi dan dijalankan tanpa melewati argumen apa pun, itu menghasilkan hasil sebagai berikut.

2013-09-13 03:01:18.333 demo[7640] One argument expected

Perlu dicatat itu argv[0] memegang nama program itu sendiri dan argv[1]adalah penunjuk ke argumen baris perintah pertama yang diberikan, dan * argv [n] adalah argumen terakhir. Jika tidak ada argumen yang diberikan, argc akan menjadi satu, sebaliknya jika Anda memberikan satu argumen, makaargc diatur ke 2.

Anda meneruskan semua argumen baris perintah yang dipisahkan oleh spasi, tetapi jika argumen itu sendiri memiliki spasi, maka Anda dapat meneruskan argumen tersebut dengan meletakkannya di dalam tanda kutip ganda "" atau tanda kutip tunggal ''. Mari kita tulis ulang contoh di atas sekali lagi di mana kita akan mencetak nama program dan kita juga memberikan argumen baris perintah dengan meletakkan di dalam tanda kutip ganda -

#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;
}

Ketika kode di atas dikompilasi dan dieksekusi dengan argumen tunggal yang dipisahkan oleh spasi tetapi di dalam tanda kutip ganda tertulis "Testing1 Testing2", itu menghasilkan hasil sebagai berikut.

2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.