Αφαίρεση MKMapView σχολιασμοί προκαλεί διαρροές

ψήφοι
1

Έχω βρασμένο ένα πολύ σύνθετο σύνολο των υπηρεσιών web και αναζητήσεις κάτω στο απλό κώδικα παρακάτω. Θα πρέπει να είναι σε θέση να προσθέσετε σχόλια σε ένα χάρτη ως απάντηση σε μια αναζήτηση (ή στο δείγμα παρακάτω για να το πάτημα ενός κουμπιού), στη συνέχεια, επιτρέπουν στο χρήστη να κάνει κλικ ξανά στο κουμπί και να πάρετε ένα νέο σύνολο των αποτελεσμάτων. Στην πραγματικότητα, θα υπάρξει μια διαφορετική σειρά, αλλά στο απλουστευμένο παράδειγμα, μπορούμε πάντα να προσθέσετε ένα σχόλιο στο MapView. Πιστεύω κωδικό μου πρέπει να αρθούν τα υπάρχοντα σχόλια και να προσθέσετε ένα νέο, αλλά διαρρέει 32 bytes για το δεύτερο και τα επόμενα ωθεί το κουμπί. Τι είμαι εγώ που λείπει; (Ή διατηρώντας ανάλογα με την περίπτωση μπορεί να είναι!)

testViewController.h

#import <UIKit / UIKit.h>
#import <MapKit / MapKit.h>
#import MyMark.h

@interface testViewController: UIViewController {
    MKMapView * MapView?
}

@τέλος

testViewController.m

- (id) initWithNibName: (NSString *) nibNameOrNil δέσμη: (NSBundle *) nibBundleOrNil {
    εάν (self = [σούπερ initWithNibName: nibNameOrNil δεσμίδα: nibBundleOrNil]) {
        // Προσαρμοσμένη προετοιμασίας
        self.title = @ δοκιμή?
    }
    επιστρέψει αυτο?
}

- (void) storeLocationInfo: (CLLocationCoordinate2D) τίτλος loc: (NSString *) t υπότιτλος: (NSString *) st δείκτη: (int) i {
    NSArray * σχολιασμοί = [MapView σχολιασμούς]?
    [RemoveAnnotations MapView: σχολιασμούς]?

    MyMark * mymark = [[MyMark alloc] initWithCoordinate: loc]?
    [MapView addAnnotation: mymark]?
    [Απελευθέρωση MyMark]?
}

- (void) viewDidLoad {
    [Σούπερ viewDidLoad]?
    UIBarButtonItem * barButton = [[UIBarButtonItem αΐΐοο] initWithTitle: @ Προσθέστε το σημείο στο χάρτη ​​στυλ: στόχος UIBarButtonItemStylePlain: χωρίς δράση: @selector (addPushed)]?
    [Self.navigationItem setRightBarButtonItem: barButton]?
    [Απελευθέρωση barButton]?

    MapView = [[MKMapView alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)]?
    mapView.showsUserLocation = FALSE?
    mapView.delegate = αυτο?
    [Self.view insertSubview: MapView atIndex: 0]?
    [Απελευθέρωση MapView]?
}

- (void) addPushed {
    MKCoordinateRegion reg = mapView.region?
    [Αυτο storeLocationInfo: Τίτλος reg.center: @ τιμή υπότιτλος: @ τίτλος δείκτης: 1]?
}

- (void) dealloc {
    [Σούπερ dealloc]?
}

MyMark.h

#import <Ίδρυμα / Foundation.h>
#import <MapKit / MapKit.h>


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D συντεταγμένων?
    NSString τίτλο *?
    NSString * υποτίτλων?
    δείκτη int?
}
@property (nonatomic, μόνο για ανάγνωση) CLLocationCoordinate2D συντονίζει?
@property (nonatomic, μόνο για ανάγνωση) δείκτη int?
@property (nonatomic, διατηρούν) NSString * τίτλο?
@property (nonatomic, διατηρούν) NSString * υπότιτλος?
- (id) initWithCoordinate: (CLLocationCoordinate2D) συντονίζει?
- (id) setCoordinate: (CLLocationCoordinate2D) συντονίζει?
- (id) settitle: (NSString *) t υπότιτλος: (NSString *) st δείκτη: (int) i?

@τέλος

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize συντεταγμένων, ο δείκτης?
@synthesize τίτλος, υπότιτλος?

- (id) initWithCoordinate: (CLLocationCoordinate2D) γ {
    συντεταγμένων = c?
    NSLog (@ % f,% f, c.latitude, c.longitude)?
    επιστρέψει αυτο?
}

- (id) setCoordinate: (CLLocationCoordinate2D) γ {
    συντεταγμένων = c?
    NSLog (@ % f,% f, c.latitude, c.longitude)?
    επιστρέψει αυτο?
}

- (id) settitle: (NSString *) t υπότιτλος: (NSString *) st δείκτη: (int) i {
    self.title = t?
    self.subtitle = st?
    Δείκτης = i?
    επιστρέψει αυτο?
}

- (void) dealloc {
    [Απελευθέρωση τίτλος]?
    [Απελευθέρωση υπότιτλος]?
    [Σούπερ dealloc]?
}
Δημοσιεύθηκε 03/09/2009 στις 11:26
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
4

Δεν είστε απελευθερώνοντας mymarkτο storeLocationInfo:title:subtitle:index:. Μοιάζει με το πρόβλημα είναι τυπογραφικό λάθος. Η γραμμή που διαβάζει

[MyMark release];

θα πρέπει να είναι

[mymark release];

Σημειώστε τη διαφορά υπόθεση. Η πρώτη γραμμή στέλνει releaseστην τάξη, δεν είναι η περίπτωση.

Απαντήθηκε 29/09/2009 στις 17:16
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more