詳解Objective-C可變參數(shù)函數(shù)定義
詳解Objective-C可變參數(shù)函數(shù)定義是本文有搜介紹的內(nèi)容,在iPhone中涉及數(shù)據(jù)庫的操作的時候,在更新操作中要傳遞可變參數(shù),這些可變參數(shù)其實就是數(shù)據(jù)庫語句,這樣在數(shù)據(jù)庫涉及的過程中,不利于數(shù)據(jù)和業(yè)務(wù)的分離,對此,我們可以對其提供的函數(shù)再包裝。
首先來看看Objective-C中對可變參數(shù)函數(shù)的定義、調(diào)用,eg:
  
Objective-C
.h文件
  
 
- @interface sqlHelper : NSObject
 - {
 - }
 - -(int) executeInsertWithSql:(NSString *) statement, ...;
 - @end
 - .m文件
 - -(int) executeInsertWithSql:(NSString *) statement, ...
 - {
 - PLSqliteDatabase* dbPointer = [SqliteDataBase setUp];
 - argsArray = [[NSMutableArray alloc] init];
 - id arg;
 - va_list argList;
 - if(statement)
 - {
 - va_start(argList,statement);
 - while (arg = va_arg(argList,id))
 - {
 - [argsArray addObject:arg];
 - }
 - va_end(argList);
 - }
 - BOOL bResult = [dbPointer executeUpdate:statement,[argsArray objectAtIndex:0],[argsArray objectAtIndex:1]];
 - return bResult;
 - }
 
C語言庫文件
- va_list argList:定義一個指向個數(shù)可變的參數(shù)列表指針;
 
va_start(argList,statement):使參數(shù)列表指針arg_ptr指向函數(shù)參數(shù)列表中的第一個可選參數(shù),說明:argN是位于第一個可選參數(shù)之前的固定參數(shù),(或者說,最后一個 固定參數(shù);…之前的一個參數(shù)),函數(shù)參數(shù)列表中參數(shù)在內(nèi)存中的順序與函數(shù)聲明時的順序是一致的。如果有一va函數(shù)的聲明是void va_test(char a, char b, char c, …),則它的固定參數(shù)依次是a,b,c,最后一個固定參數(shù)argN為c,因此就是va_start(arg_ptr, c)。
- va_arg(argList,id):返回參數(shù)列表中指針arg_ptr所指的參數(shù),返回類型為type,并使指針arg_ptr指向參數(shù)列表中下一個參數(shù)。
 - va_end(arg_ptr):清空參數(shù)列表,并置參數(shù)指針arg_ptr無效。
 
在調(diào)用的時候要在參數(shù)結(jié)尾的時候加nil
- sqlHelper *sqlCom = [[sqlHelper alloc] init];
 - [sqlCom executeInsertWithSql:@"INSERT INTO authorInfo(author,age) VALUES (?,?)",@"cheungching",@"25", nil];
 
小結(jié):詳解Objective-C可變參數(shù)函數(shù)定義的內(nèi)容介紹完了,希望本文對你有所幫助!















 
 
 

 
 
 
 