Ist es möglich zu erklären, eine Objective-C-Methode außerhalb einer Klasse?
Ich weiß, dass Sie erklären können, einer C-Funktion außerhalb einer Klasse, aber ist es möglich zu erklären, eine Objective-C-Methode außerhalb einer Klasse?
Beispiel:
//Works
void printHelloC()
{
NSLog(@"Hello.");
}
//Error
-(void) printHelloOC
{
NSLog(@"Hello.");
}
int main (int argc, const char * argv[])
{
@autoreleasepool {
printHelloC();
[self printHelloOC];//'self' obviously would not work but you get the idea
}
return 0;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommt es an. Sie können tun, etwas ähnliches mit Methode hinzufügen zur Laufzeit:
Aber das ist über es außerhalb der @ - Klasse-Konstrukt, und es ist wirklich nur deckt, was passiert mit einer Kategorie.
Können Sie eine Kategorie für diese.
Wie eine Instanz-Methode:
Als Methode einer Klasse:
Natürlich, müssen Sie die Assoziation mit einer Klasse - es ist also nicht genau das gleiche wie du geschrieben, aber es ist eine enge definition + Erklärung getrennt von der formellen Deklaration der Klasse.
NSString
Methode. Das ist nicht außerhalb einer Klasse - das ist insideNSString
!Methode ohne eine zugehörige Klasse ist ein sinnloses Konzept. Funktionen, wie Sie bemerkt haben, sind in Ordnung.
NSObject
?Ziel von c-Funktionen sind immer im Zusammenhang mit der a-Klasse. Wenn Sie meinen, Sie möchten ein objective-c-Funktion ohne Instanziierung einer Klasse, können Sie natürlich schreiben einer Methode der Klasse (man beachte das plus-Zeichen anstelle des üblichen Bindestrich)
dann rufen Sie es durch aufrufen
Nein, es ist nicht möglich - Sie müssen verwenden Sie entweder die Globale C-Funktion oder Klasse ( + ) - Methoden.