Эй. У меня есть очень простой текстовый вывод в буферную систему, которая будет зависать случайным образом. Это будет хорошо в течение ДНЕЙ, тогда иногда это терпит крах несколько раз через несколько минут. Callstack почти точно такой же для других парней, которые используют элементы управления более высокого уровня:
http://discussions.apple.com/thread.jspa?messageID=7949746
Сбой приложения для iPhone: функция подтверждения не выполнена evict_glyph_entry_from_strike, файл Fonts / CGFontCache.c
Вылетает на линии (также ниже в drawTextToBuffer ()):
[nsString drawAtPoint: CGPointMake (0, 0) withFont: clFont];
У меня тот же вызов "evict_glyph_entry_from_cache" с вызовами прерывания сразу после него.
Видимо, это происходит с другими людьми. Я могу сказать, что мой NSString * прекрасно работает во время аварии. Я могу читать текст из отладчика просто отлично.
static CGColorSpaceRef curColorSpace;
static CGContextRef myContext;
static float w, h;
static int iFontSize;
static NSString* sFontName;
static UIFont* clFont;
static int iLineHeight;
unsigned long* txb; /* 256x256x4 Buffer */
void selectFont(int iSize, NSString* sFont)
{
iFontSize = iSize;
clFont = [UIFont fontWithName:sFont size:iFontSize];
iLineHeight = (int)(ceil([clFont capHeight]));
}
void initText()
{
w = 256;
h = 256;
txb = (unsigned long*)malloc_(w * h * 4);
curColorSpace = CGColorSpaceCreateDeviceRGB();
myContext = CGBitmapContextCreate(txb, w, h, 8, w * 4, curColorSpace, kCGImageAlphaPremultipliedLast);
selectFont(12, @"Helvetica");
}
void drawTextToBuffer(NSString* nsString)
{
CGContextSaveGState(myContext);
CGContextSetRGBFillColor(myContext, 1, 1, 1, 1);
UIGraphicsPushContext(myContext);
/* This line will crash. It crashes even with constant Strings.. At the time of the crash, the pointer to nsString is perfectly fine. The data looks fine! */
[nsString drawAtPoint:CGPointMake(0, 0) withFont:clFont];
UIGraphicsPopContext();
CGContextRestoreGState(myContext);
}
Это будет происходить с другими методами, не поддерживающими Юникод, такими как CGContextShowTextAtPoint (); стек вызовов аналогичен этому.
Это какая-то известная проблема с iPhone? Или, может быть, что-то вне этой причины вызывает исключение в этом конкретном вызове (drawAtPoint)?