Аргумент в выражении сообщения является неинициализированным значением? - PullRequest
0 голосов
/ 11 августа 2011

Я получаю предупреждение. Аргумент в выражении сообщения является неинициализированным значением в жирной строке ниже:

***SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"Share")***
                                                      delegate:as
                                             cancelButtonTitle:nil
                                        destructiveButtonTitle:nil
                                             otherButtonTitles:nil];
    as.item = [[[SHKItem alloc] init] autorelease];
    as.item.shareType = type;

Есть идеи, что не так или как я могу это исправить? P.S. - это в ShareKit

Спасибо!

Edit1: То есть вы говорите это сделать?

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type
{
    SHKItem *myItem = [SHKItem text:@"Share"];  // See SHKItem for other convenience constructors for URL, image, text and file item types.
    SHKActionSheet *as = [SHKActionSheet actionSheetForItem:myItem];
    as.item.shareType = type;

    as.sharers = [NSMutableArray arrayWithCapacity:0];
    NSArray *favoriteSharers = [SHK favoriteSharersForType:type];

    // Add buttons for each favorite sharer
    id class;
    for(NSString *sharerId in favoriteSharers)
    {
        class = NSClassFromString(sharerId);
        if ([class canShare])
        {
            [as addButtonWithTitle: [class sharerTitle] ];
            [as.sharers addObject:sharerId];
        }
    }

    // Add More button
    [as addButtonWithTitle:SHKLocalizedString(@"More...")];

    // Add Cancel button
    [as addButtonWithTitle:SHKLocalizedString(@"Cancel")];
    as.cancelButtonIndex = as.numberOfButtons -1;

    return [as autorelease];
}

Edit2:

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type
{

    SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"Share")
                                                      delegate:nil
                                             cancelButtonTitle:nil
                                        destructiveButtonTitle:nil
                                             otherButtonTitles:nil];
    as.item = [[[SHKItem alloc] init] autorelease];
    as.delegate = self;


    as.item.shareType = type;

    as.sharers = [NSMutableArray arrayWithCapacity:0];
    NSArray *favoriteSharers = [SHK favoriteSharersForType:type];

    // Add buttons for each favorite sharer
    id class;
    for(NSString *sharerId in favoriteSharers)
    {
        class = NSClassFromString(sharerId);
        if ([class canShare])
        {
            [as addButtonWithTitle: [class sharerTitle] ];
            [as.sharers addObject:sharerId];
        }
    }

    // Add More button
    [as addButtonWithTitle:SHKLocalizedString(@"More...")];

    // Add Cancel button
    [as addButtonWithTitle:SHKLocalizedString(@"Cancel")];
    as.cancelButtonIndex = as.numberOfButtons -1;

    return [as autorelease];
}

1 Ответ

2 голосов
/ 11 августа 2011

Я почти уверен, что проблема в этой строке:

delegate:as

проблема в том, что вы задаете делегату значение 'as', которое является именем листа действий, который вы инициализируете. (поэтому вы пытаетесь передать ссылку на объект, который вы инициализируете, в качестве аргумента инициализатора).

Вместо этого установите делегат равным nil при вызове alloc / init и явно установите делегат после вызова.

SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"Share")***
                                    delegate:nil
                                    cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                    otherButtonTitles:nil];
as.delegate = as;
as.item = [[[SHKItem alloc] init] autorelease];
as.item.shareType = type;
...