2011-11-30 12 views
5

Natknąłem się na poniższe i nie mogę się domyślić, dlaczego to działa. Czy możesz wyjaśnić, dlaczego nie muszę używać wskaźnika przed range?O wskaźnikach w Objective-C

NSString *d = @"The quick brown fox"; 
NSRange range = [d rangeOfString:@"brown"]; 

Odpowiedz

9

NSString to typ obiektu. Wszystkie typy obiektów są wskaźnikami i nie można ich utworzyć na stosie. NSRange jest strukturą C. Struktury mogą być tworzone na stosie, a więc niekoniecznie wszystkie wskaźniki.

Nie ma dobrego przewodnika, który wie, które z nich są obiektami, a które są strukturami. Po każdym kroku będziesz musiał sprawdzać każdy typ.

+0

+1 Do OP: pamiętaj, że Objective-C to super zestaw C, dodający funkcje OOP. Ale nawet jeśli możesz kodować w sposób OOP, musisz jeszcze znać (przynajmniej) kilka podstawek C. – Macmade

+0

Solidne zrozumienie alokacji sterty vs stos byłoby bardzo przydatne. –

+1

Nawet niezbyt solidny ... Tylko kilka podstaw naprawdę pomógłoby, IMHO:) – Macmade

Powiązane problemy