Staram się wysłać obraz za pomocą shareKit bez użycia ActionSheet, ale używając własnego przycisku z

...
// --- add the mail button ------------------------------------
UIButton *buttonMail = [UIButton buttonWithType:UIButtonTypeCustom];
buttonMail.frame = CGRectMake( 0,0, btnW, btnH); 
[buttonMail setImage:[UIImage imageNamed:@"btn_mail.png"] forState:UIControlStateNormal];
[buttonMail addTarget:self action:@selector(sendPerMailEvent:) forControlEvents:UIControlEventTouchUpInside];
...

        // the sharekit image object
        item = [SHKItem image:image title:@"Name of the image" ];
        item.text = @"some text...";
        [SHK setRootViewController:self.webView.window.rootViewController];
...

I

-(void)sendPerMailEvent:(id)sender {    
    [SHKMail shareItem:item];
    [self closeScreenshotView];
}

Ale kiedy klikam przycisk, xcode wyświetla mi błąd „EXC_BAD_ACCESS” w pierwszym wierszu funkcji shareItem():

+ (id)shareItem:(SHKItem *)i
{
    [SHK pushOnFavorites:[self sharerId] forType:i.shareType]; // -> EXC_BAD_ACCESS

Jestem nowy w objective-c, a aplikacja jest tworzona przy użyciu phonegap. dzięki!

1
headkit 18 luty 2012, 22:04

2 odpowiedzi

Najlepsza odpowiedź

Teraz dowiedziałem się: muszę dodać [item retain], to wszystko.

0
headkit 26 luty 2012, 20:26

Po pierwsze, sygnał EXC_BAD_ACCESS mówi ci, że próbujesz uzyskać dostęp do obiektu po jego usunięciu.

Problem wygląda tak, że nie inicjujesz obiektu i jest on zwalniany, zanim będziesz go potrzebować.

Spróbuj tego:

SHKItem* item = [SHKItem alloc] init] 
[item seTitle:@"Name of the image"];

I zobacz, czy nadal masz ten problem.

W przyszłości, jeśli otrzymasz EXC_BAD_ACCESS, spróbuj włączyć środowisko NSZombieEnabled link tutaj

Po drugie. Możesz przesłonić metodę dealloc klasy, która daje ci EXC_BAD_ACCESS i wydrukować stacktrace, aby pokazać, co powoduje cofnięcie alokacji za pomocą:

NSLog(@"I've been dealloced by: %@",[NSThread callStackSymbols]);
1
Ryan 18 luty 2012, 22:41