/ / Przekazywanie bloków o nieznanych sygnaturach jako parametrów w celu c - cel-c, wykres, cel-c-bloków

Przekazywanie bloków o nieznanych sygnaturach jako parametrów w celu c - cel-c, wykres, cel-c-bloków

Robię wykres i chcę stworzyć systemdo określania warunków przejścia między węzłami wzdłuż krawędzi. Nie jestem pewien, jak powinien wyglądać podpis metody, ponieważ różne przejścia będą miały różne parametry.

Tak więc dwie interesujące funkcje to:

-addEdge(NSString* firstState, NSString* secondState,NSString* edgeName, block (?))

-(bool)transition(NSString* edgeName, parameters (?) ... )

addEdge () przekazuje w bloku, który definiuje warunek przejścia między firstState i secondState, i nadaje mu nazwę.

transition () pobiera listę parametrów i stosuje je do bloku związanego z nazwą krawędzi.

Jak powinny wyglądać podpisy metod, w tym przypadku?

Odpowiedzi:

0 dla odpowiedzi № 1

Bloki mogą akceptuj zmienne argumenty, chociaż akceptujesz NSArray jest prawdopodobnie prostsze.

typedef void(^VarArgsBlock)(int argumentLength, ...);

0 dla odpowiedzi nr 2

Nie możesz zadeklarować bloku z dowolnymi parametrami. Ale zawsze możesz dodać ID parametr, który jest cokolwiek chcesz. Mogłoby być NSArray lub obiekt jakiejś konkretnej klasy, którą zdefiniowałeś, czegokolwiek chcesz. Dlatego nie potrzebujesz żadnego varargs.