sharekit :: EXC_BAD_ACCESS @ shareItem - PullRequest
       17

sharekit :: EXC_BAD_ACCESS @ shareItem

1 голос
/ 18 февраля 2012

Я пытаюсь отправить изображение с помощью shareKit, не используя actionSheet, но используя свою собственную кнопку с

...
// --- 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];
...

и

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

, но когда я нажимаю кнопку xcodeвыдает мне сообщение об ошибке " EXC_BAD_ACCESS " в первой строке shareItem ():

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

Я новичок в объективе-c, и приложение создано с использованием phonegap.Thnx!

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Прежде всего сигнал EXC_BAD_ACCESS говорит вам, что вы пытаетесь получить доступ к объекту после того, как он был удален.

Проблема здесь выглядит так, как будто вы не инициализируете объект, и он освобождается до того, как он вам понадобится.

Попробуйте это:

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

и посмотрите, по-прежнему ли у вас эта проблема.

В будущем, если вы получите EXC_BAD_ACCESS, попробуйте включить среду NSZombieEnabled ссылка здесь

Во-вторых. Вы можете переопределить метод dealloc класса, который дает вам EXC_BAD_ACCESS, и распечатать трассировку стека, чтобы показать вам, что освобождает его, используя:

NSLog(@"I've been dealloced by: %@",[NSThread callStackSymbols]);
0 голосов
/ 26 февраля 2012

теперь я узнал: мне нужно было добавить [item retain], вот и все.

...