2014-10-14 12 views
9

Beim Versuch, ein AutoLayout-Problem zu debuggen (eine Tabellenzelle, die mit der Größe ihres Inhalts wachsen soll, wird unter bestimmten Umständen nicht gesetzt), stelle ich ein ein Haltepunkt in der letzten Zeile meiner tableView:heightForRow: Methode, und versucht, den Wert von systemLayoutSizeFittingSize: ich diese erhalten zu drucken:"Dieser NSLayoutConstraint wird mit einer Konstanten konfiguriert, die interne Grenzen überschreitet"

(lldb) p ((CGSize)[cachedCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]).height 
2014-10-14 11:15:49.492 AppName[72132:10302054] This NSLayoutConstraint is being configured with a constant that exceeds internal limits. A smaller value will be substituted, but this problem should be fixed. Break on void _NSLayoutConstraintNumberExceedsLimit() to debug. This will be logged only once. This may break in the future. 
(CGFloat) $0 = 57 

Na ok, das ist interessant. Aber ich versuche, und tun, was er sagt, und einen Haltepunkt an dieser Funktion:

Grab of breakpoint definition on _NSLayoutConstraintNumberExceedsLimit()

... und dieser Haltepunkt nicht getroffen hat bekommen.

  • Setze ich den Haltepunkt korrekt?
  • In jedem Fall, irgendwelche Hinweise auf, was könnte falsch mit meinen Einschränkungen führen zu diesem?

(Dummerweise scheint es in einigen Fällen zu arbeiten, aber nicht in anderen, und ich kann keinen Unterschied im Setup. Sehen)

Antwort

10

Auslassen der () aus dem Symbolnamen. Es ist ein wenig klarer, was geschieht, wenn Sie den Debugger Konsolenfenster verwenden Sie diesen Haltepunkt mit dem breakpoint set --name Befehl zu setzen:

(lldb) br s -n _NSLayoutConstraintNumberExceedsLimit() 
Breakpoint 1: no locations (pending). 
WARNING: Unable to resolve breakpoint to any actual locations. 
(lldb) br s -n _NSLayoutConstraintNumberExceedsLimit 
Breakpoint 2: where = Foundation`_NSLayoutConstraintNumberExceedsLimit, address = 0x00007fff9168e6f5 
(lldb) 

Wenn Sie den breakpoint list (br l) Befehl in Xcode Debug-Sitzung verwendet hätten, hätte man gesehen dass der _NSLayoutConstraintNumberExceedsLimit() Breakpoint an keiner Stelle gesetzt wurde.

+0

Nun, jetzt habe ich einen Breakpoint nach 'br l' gesetzt (danke!), Aber es wird immer noch nicht getroffen - es sei denn, ich rufe 'p (CGSize) [cachedCell.contentView systemLayoutSizeFittingSize: UILayoutFittingCompressedSize]' im Debugger, in diesem Fall kann ich die Trefferanzahl nach oben gehen sehen! –

+1

Endlich das Problem gelöst. Wenn ich 'preferredMaxLayoutWidth' manuell auf dem Etikett einstellen muss, was zur Hölle macht Auto Layout für mich ?! –

+0

@RobertAtkins, wie hast du es behoben? – orkenstein