我剛寫了一段代碼在我的應用程序中顯示UIActionSheet。雖然看着代碼來初始化我的UIActionSheet,但有些東西讓我覺得有點奇怪。初始化函數具有以下簽名...將NSArray指針傳遞給指定類型的指針
initWithTitle:(NSString *)title delegate:(id UIActionSheetDelegate)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles
正如你可以看到otherButtonTitles參數是一個字符串指針。在我的代碼中,我將它設置如下...
otherButtonTitles: @"Title", @"Date", nil
雖然這個編譯好,但我並不真正瞭解它是如何工作的。我對這個語句的閱讀是,我創建了一個包含兩個元素(標題和日期)的內聯數組。這是如何編譯的?我通過一個NSArray *來代替NSString *。我從一些對C++的理解中知道一個數組實際上是指向第一個元素的指針。那麼這個內聯數組是我創建一個C數組而不是一個NSArray?
我希望能夠實現的是能夠將我的課程中其他地方使用的靜態NSArray *傳遞給otherButtonTitles參數。但直接傳遞NSArray *對象不起作用。
謝謝!不幸的是,它看起來像XCode的代碼完成沒有指出var args參數 - 這是我從中複製它的地方。我以前在Java中遇到過這個概念,所以這一切都合情合理! – mmccomb 2010-04-25 14:09:25