Xcode 6.3(和6.2)在[UIFont fontWithName:size:]上命中断点

Cha*_*ana 10 iphone xcode objective-c ios xcode6

在我的iOS应用程序中使用类(DKTheme)将我的字体和图像保存在一个集中的位置.我的实现看起来像这样.

+ (instancetype)theme {
    static DKTheme *_theme = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _theme = [[DKTheme alloc] init];
    });
    return _theme;
}

- (id)init {
    self = [super init];
    if (self) {
        [self setupTheme];
    }
    return self;
}

- (void)setupTheme {
// some code here
self.smallButtonFont = [UIFont fontWithName:@"Helvetica-Bold" size:13.0f];
//some code here
}
Run Code Online (Sandbox Code Playgroud)

当我在设备(iPhone 5C,iOS8.3和iOS8.2)中运行此代码时,self.smallButtonFont = [UIFont fontWithName:@"Helvetica-Bold" size:13.0f];如果我单击继续执行按钮,xcode会在线路上遇到断点,应用程序继续运行而不会崩溃并且我的font属性(self.smallButtonFont)已成功初始化.

断点

调用堆栈

我还注意到了另外一件事,我[UIFont fontWithName: size:];只有第一次打电话才有几个电话和断点点击.(如果我评论第一个,那么下一个方法调用就会达到断点).这真的很烦人这个断点问题,任何帮助都会感激不尽.

Ken*_*ses 22

您已在Xcode中添加了断点异常,并将其配置为在所有异常类型(C++和Objective-C)上中断.问题是C++代码有时会在非异常情况下使用异常.它可以将它用作流控制的一种形式或从函数返回"失败".

除非你有一个特定的C++异常需要调试,因为它实际上导致了一个问题,所以最好配置那个断点来打破Objective-C异常而不是C++异常.可以安全地忽略C++异常.


Meh*_*kar 5

添加“所有异常”断点时,总是会发生这种情况。在这里,您只需要添加Objective-C断点。跟着这些步骤:

  1. 选择Breakpoints调试器,右键单击“所有异常”。

在此处输入图片说明

  1. 现在选择单击“编辑断点”

  2. 将异常类型更改为“ Objective-c异常”

在此处输入图片说明