2009-04-02 35 views
14

Tôi nhận thấy điều này trong nguồn của Joe Hewitt cho Three20 và tôi chưa bao giờ thấy cú pháp cụ thể này trong Objective-C trước đây. Thậm chí không chắc chắn làm thế nào để tham khảo nó trong một tìm kiếm Google thích hợp.Cú pháp Objective-C này là gì, ký hiệu chấm chấm kiểu dấu chấm? "..."

Từ TTTableViewDataSource:

+ (TTSectionedDataSource*)dataSourceWithObjects:(id)object,... { 

Các "..." là những gì đang ném tôi ra khỏi đây. Tôi giả định nó là một dạng liệt kê, nơi có thể cung cấp một số lượng đối số thay đổi. Nếu có, tên chính thức của nhà điều hành này là gì và tôi có thể tham khảo tài liệu về nó ở đâu?

Cảm ơn bạn.

Trả lời

39

Đó là phương pháp variadic, có nghĩa là phải mất một số lượng đối số thay đổi. This page có một cuộc biểu tình tốt như thế nào để sử dụng nó:

#import <Cocoa/Cocoa.h> 

@interface NSMutableArray (variadicMethodExample) 

- (void) appendObjects:(id) firstObject, ...; // This method takes a nil-terminated list of objects. 

@end 

@implementation NSMutableArray (variadicMethodExample) 

- (void) appendObjects:(id) firstObject, ... 
{ 
id eachObject; 
va_list argumentList; 
if (firstObject)      // The first argument isn't part of the varargs list, 
    {         // so we'll handle it separately. 
    [self addObject: firstObject]; 
    va_start(argumentList, firstObject);   // Start scanning for arguments after firstObject. 
    while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id" 
    [self addObject: eachObject];    // that isn't nil, add it to self's contents. 
    va_end(argumentList); 
    } 
} 
+0

+1 ... bạn gõ wayyyyy nhanh hơn tôi :-) –

+0

LOL, và nhanh hơn so với tôi, quá, với sự liên kết cùng! –

+0

Cảm ơn bạn Pesto và tất cả! –

Các vấn đề liên quan