关于在iPad上调试UIAppFonts问题的建议

关于在iPad上调试UIAppFonts问题的建议,ipad,fonts,plist,freeze,Ipad,Fonts,Plist,Freeze,我最近发现了这篇文章,它似乎描述了我在添加自己的ttf时遇到的相同问题。我的应用程序冻结了。然而,关于这篇文章的一些事情让我困惑,我很想得到一些帮助来解读它 帖子在这里: 我试图理解的相关段落如下: 附加调试器并暂停 该应用程序显示了一个not 特别有用的调用堆栈: 旋转锁中的0 0xffff028f 1. 导致错误的特定代码 问题: CTFontCollectionRef集合= CTFontCollectionCreateFromAvailableFonts(空); CFArrayRef字体=

我最近发现了这篇文章,它似乎描述了我在添加自己的ttf时遇到的相同问题。我的应用程序冻结了。然而,关于这篇文章的一些事情让我困惑,我很想得到一些帮助来解读它

帖子在这里:

我试图理解的相关段落如下:

附加调试器并暂停 该应用程序显示了一个not 特别有用的调用堆栈:

旋转锁中的0 0xffff028f 1. 导致错误的特定代码 问题:

CTFontCollectionRef集合= CTFontCollectionCreateFromAvailableFonts(空); CFArrayRef字体= CTFontCollectionCreateMatchingFontDescriptor(集合); 对于(NSArray)中的(id fontDescRef *)字体){CFStringRef fontName=CTFontDescriptorCopyAttribute((CTFontDescriptorRef)FontDescriptorRef, kCTFontNameAttribute);NSLog(@“%@), fontName);CFRelease(fontName);}
CFRelease(字体)

执行永远不会超越目标 第二行

问题:他是如何找出导致问题的线路和功能的?这是否与显示反汇编、以混合模式显示反汇编或在映射文件中查找十六进制值有关?我想知道这是怎么做到的

被要求提供演示和 因此,进一步调查, 我发现这个问题很明显 如果代码在我的 应用程序:didFinishLaunchingWithOptions: 但如果我有同样的东西就不会了 视图加载了我的初始视图 控制器

问:他在这里指的“代码”是什么?这个问题与通过plist值添加自定义字体有关,因此我不确定他指的是什么,也不确定我如何解决这个问题


请帮忙

好吧,关于这篇文章我没什么要说的,但我确实在苹果开发者论坛上找到了一个解决办法。基本上,从ApplicationIDFinishLaunching fn调用此函数:

- (NSUInteger) loadFonts {
     NSUInteger newFontCount = 0;
     NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
     const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
     if (frameworkPath) {
          void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
          if (graphicsServices) {
               BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
               if (GSFontAddFromFile)
                    for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
                         newFontCount += GSFontAddFromFile([fontFile UTF8String]);
          }
     }

     return newFontCount;
}
并确保包含dlcfn.h,并将dlsym的结果转换为以下内容:

(BOOL()(const char))


我没有更改原始帖子,只是为了防止这个错误影响我。

你有没有找到解决这个问题的方法?如果你是这个意思的话,我认为苹果没有修复它。不过,我在下面发布的答案中使用了变通方法。