2009-04-02 4 views
14

J'ai remarqué cela dans la source de Joe Hewitt pour Three20 et je n'ai jamais vu cette syntaxe particulière dans Objective-C auparavant. Pas même sûr de savoir comment le référencer dans une recherche Google appropriée.Qu'est-ce que cette syntaxe Objective-C, notation par points elliptiques? "..."

De TTTableViewDataSource:

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

Le "..." est ce qui me jetant ici. Je suppose que c'est une forme d'énumération où une quantité variable d'arguments peut être fournie. Si c'est le cas, quel est le nom officiel de cet opérateur et où puis-je consulter la documentation?

Merci beaucoup.

Répondre

39

C'est une méthode variadique, ce qui signifie qu'il faut un nombre variable d'arguments. This page a une bonne démonstration de comment l'utiliser:

#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 ... vous tapez wayyyyy plus vite que moi :-) –

+0

LOL, et plus vite que moi aussi, avec le même lien! –

+0

Merci Pesto et tout! –

Questions connexes