Ожидаемый идентификатор или маркер '(' before '{' - PullRequest
1 голос
/ 27 февраля 2012

Я заявляю:

CCSprite + файл DisableTouch.h

#import "cocos2d.h"

@interface CCSprite (DisableTouch) <CCTargetedTouchDelegate>  {

}

-(void)disableTouch;
-(void)enableTouch;

@end

А для файла CCSprite + DisableTouch.m

#import "CCSprite+DisableTouch.h"


@implementation CCSprite (DisableTouch)

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    return YES;
}

-(void)disableTouch
{
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1000 swallowsTouches:YES];
}

-(void)enableTouch
{
    [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
}

@end

почему я получаю: Expected identifier or '(' before '{' token ошибка?Как мне решить эту проблему?

Ответы [ 2 ]

6 голосов
/ 27 февраля 2012

Ошибка заключается в добавлении символов { & } в вашу категорию, поскольку категории не могут иметь iVars.

Если вам нужен iVar с вашей категорией, рассмотрите возможность использования связанных объектов:

#import <objc/runtime.h>

...

objc_setAssociatedObject(self, @"iVar", @"value", OBJC_ASSOCIATION_ASSIGN);

...

id iVar = objc_getAssociatedObject(self, @"iVar");

Для получения дополнительной информации о связанных объектах смотрите здесь .

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

Как сказал Ричард; Вы не можете добавить iVars в категории, и это является источником предупреждения / ошибки компилятора.

Однако здесь есть что-то более тонкое.

Если вы собираетесь переопределить поведение CCSprite, вы должны использовать подкласс, а не категорию. Используя категорию, вы будете изменять поведение всех CCSprite в вашем приложении, что вряд ли будет желаемым поведением (спросите себя; что произойдет, если в вашей программе будет элемент пользовательского интерфейса, который использует какой-то из the-box cocos2d - или сторонний пользовательский интерфейс, который полагался на существующее поведение касания CCSprite?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...