У меня есть класс с именем RSTimer
, который имеет два метода с именами CreateTimer
и KillTimer
, которые используют один и тот же объект словаря. Я не смог объявить переменную как внутри интерфейса, так и внутри реализации. Он указывает в декларации и говорит, что это не константа.
-(BOOL)KillTimer:(unsigned short)wTimerId
{
stRs232Timer* pEvent;
BOOL bReturn=FALSE;
CFDictionaryValueCallBacks cbs = {0,NULL,NULL,NULL,NULL};
CFMutableDictionaryRef cfdict = CFDictionaryCreateMutableNULL,0,&kCFTypeDictionaryKeyCallBacks,&cbs);
NSLock* theLock = [[NSLock alloc]init];
if ([theLock tryLock]) {
if (CFDictionaryContainsKey(cfdict,&wTimerId)) {
free(pEvent);
bReturn = TRUE;
}
[theLock unlock];
}
return bReturn;
}
-(BOOL)CreateTimer:(RS232TimerInterface*)pStack withTimerId:(unsigned short)wTimerId withPeriod:(uint8_t)uPeriod withPersistentState:(BOOL)bPersistent
{
CFDictionaryValueCallBacks cbs = {0,NULL,NULL,NULL,NULL};
CFMutableDictionaryRef cfdict = CFDictionaryCreateMutable(NULL,0,&kCFTypeDictionaryKeyCallBacks,&cbs);
CFNumberRef timerId = CFNumberCreate(NULL,kCFNumberShortType,&wTimerId);
[self KillTimer:wTimerId];
NSLock* theLock = [[NSLock alloc]init];
if ([theLock tryLock]) {
CFDictionarySetValue(cfdict,&timerId,pEvent);
[theLock unlock];
}
}
Я также пытался объявить это в методе 'init'. Как я могу сделать
CFDictionaryValueCallBacks cbs = {0,NULL,NULL,NULL,NULL};
CFMutableDictionaryRef cfdict = CFDictionaryCreateMutable(NULL,0,&kCFTypeDictionaryKeyCallBacks,&cbs);
общее для обоих методов ..