2017-07-28 4 views
0

enter image description hereLegen Sie eine Zeigeradresse in Objective-C auf Null

In meiner Methode Polylinien werden jedes Mal die Kartenmarkierungen bewegt werden gezogen. Gemäß der Google Maps iOS-Dokumentationseinstellung wird die Polylinie durch die Polylinie auf Null entfernt.

Wenn ich das mache, nachdem die Markerbewegung ausgelöst wurde, bleiben die Polylinien übrig.

Nach anderen Posts hier kann die GMSPolyline nur entfernt werden, wenn Sie die Zeigeradresse der Zeile haben, die Sie entfernen möchten, denn selbst global deklariert die API immer noch eine andere Instanz.

Ich weiß nicht viel über Zeiger oder Adressen. Wie bekommt man die Pointer-Adresse und sobald Sie es tun, wie verweisen Sie das Objekt auf diese Adresse, sobald Sie es bekommen?

Ich kann die Adresse wie diese:

NSString *addressRight = [NSString stringWithFormat:@"%p",polylineRightPreview]; 

Jedesmal die Methode aufgerufen wird, obwohl die Variable global deklariert ich eine andere Adresse bekommen jedes Mal für GMSPolyline:

0x600000d36f80 0x620000d2dfc0 0x608001538560 

ich im Grunde brauche das:

GMSPolyline *polyline = nil; 

aber es muss auf die genaue Zeigeradresse o verweisen f der letzte erstellt. Wie stellen Sie

0x600000d36f80 to nil? 

Wenn Sie nur Linienzug = nil nichts nennen, weil wird passieren, wenn es auf der Karte hinzugefügt wurde es seinen eigenen Zeiger-Adresse hat. Außerdem ist das Aufrufen der Kartenlöschfunktion nicht nützlich, da es nicht angemessen wäre, alle anderen Kartenobjekte zu entfernen und sie neu zu zeichnen.

Antwort

1

Haben Polylinie Objekte in einem Array hinzugefügt &, wenn Sie diese Polylinien entfernen möchten, iterieren Array & gesetzt

polyline.map = nil 
+0

, das funktioniert. Sie sollten Ihre Antwort ausfüllen, um die Tatsache einzubeziehen, dass ein Array im Wesentlichen ein Index von Zeigeradressen ist. Ich werde dann das Kopfgeld vergeben. Scheint die einzige Möglichkeit zu sein, auf Zeigeradressen zu verweisen. Vielen Dank! – johnsonjp34

Verwandte Themen