Несовместимые типы указателей, отправляющие 'Class' параметру типа 'id <UIActionSheetDelegate>' - PullRequest
13 голосов
/ 09 августа 2011

Я получаю предупреждение Несовместимые типы указателей, отправляющие «Class» параметру типа «id» в строке «Delegate: Self» ниже:

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

Это предупреждение в ShareKit, если кто-нибудь знает, как это исправить, пожалуйста, дайте мне знать!

Ответы [ 3 ]

21 голосов
/ 09 августа 2011

Вы пытаетесь передать параметр self в статическом методе. Это неправильно, поскольку в статических методах нет конкретного экземпляра этого объекта. Сделайте это либо нестатическим методом, либо передайте некоторый экземпляр этого класса в качестве делегата.

8 голосов
/ 19 августа 2013

При работе со статическим классом вы можете вручную получить предупреждение:

delegate:(id<UIActionSheetDelegate>)self
4 голосов
/ 03 ноября 2011

Попробуйте использовать nil вместо self (xcode 4.2 iOS 5).

...