2010-02-10 15 views

Odpowiedz

40

Metody poprzedzone - są metodami instancji. Oznacza to, że może być stosowany tylko na przykład z grupy, np

[myStringInstance length]; 

Metody poprzedzone + są metody klasy. Oznacza to, że mogą być wezwani do klas, bez konieczności wystąpienia, np:

[NSString stringWithString:@"Hello World"]; 
+0

Po prostu ciekawy: dlaczego ten wybór notacji?+/- wydaje mi się nieco hackowskie (prawdopodobnie dlatego, że przypomina mi to, jak perl używa "@", "#", "$" znaczy * coś *) –

+1

Nie mogę wypowiedzieć się na temat wyboru notacji, ponieważ po prostu nie wiem ... Przepraszam. Może ktoś inny się dowie? – Jasarien

+1

UML używa tej samej notacji. –

1

Według this page:

Metody inicjowania zaczynają się od - a metody na poziomie klasy rozpoczynają się od +

Aby uzyskać więcej informacji, patrz this SO question.

2

minus są metody instancji (dostępne tylko za pośrednictwem instancja obiektu)

Plus są metody klasy (podobnie jak w Java Math.abs(), można go używać bez instantited Object)

0

Pierwszym jest metoda instancji, a druga to metoda klasy. Powinieneś przeczytać dokumentację Apple Objective-C, aby dowiedzieć się o różnicy.

0

+(void)methodname jest zmienna klasa i -(void)methodname jest zmienna obiektu.

Powiedzmy, że tworzysz klasę narzędzi, która ma metodę odwrócenia łańcucha. Klasa, którą nazywasz MYUtility.

Jeśli używasz +, jak

+ (NSString *)reverse:(NSString *)stringToReverse 

Można go używać bezpośrednio jak

NSString *reversed = [MYUtility stringToReverse:@"I Love objective C"]; 

jeśli stosuje się - jak

- (NSString *)reverse:(NSString *)stringToReverse 

Musisz użyć:

MYUtility *myUtil = [[MYUtility alloc] init]; 
NSString *reversed = [myUtil stringToReverse:@"There are many ways to do the same thing"]; 

Dzięki funkcji opartej na klasach po prostu dzwonisz bezpośrednio, ale nie masz dostępu do zmiennych lokalnych poza #defines, które możesz zrobić, ponieważ klasa nie jest instancjonowana.

Ale z. - (NSString trzeba instancję klasy przed użyciem, i masz dostęp do wszystkich zmiennych lokalnych

To nie jest wybrać jedną rzecz i zostać z nią, wiele klas mają zarówno, po prostu spójrz na plik nagłówkowy dla NSString, jest zaśmiecony + funkcjami i - funkcjami

Powiązane problemy