2015-09-27 71 views
0

我有以下的崩潰報告,並無法導致崩潰的地方。因爲我在任何地方使用長度字段 你有關於這個崩潰的原因任何想法:NSInvalidArgumentException - [NSNull長度]:無法識別的選擇器發送到實例

Thread : Fatal Exception: NSInvalidArgumentException 
0 CoreFoundation     0x0000000182b78f5c __exceptionPreprocess 
1 libobjc.A.dylib    0x000000019776bf80 objc_exception_throw 
2 CoreFoundation     0x0000000182b7fc6c __methodDescriptionForSelector 
3 CoreFoundation     0x0000000182b7cc14 ___forwarding___ 
4 CoreFoundation     0x0000000182a80dcc _CF_forwarding_prep_0 
5 UIKit       0x00000001880da13c -[UILabel _textRectForBounds:limitedToNumberOfLines:includingShadow:] 
6 UIKit       0x00000001880da030 -[UILabel _intrinsicSizeWithinSize:] 
7 UIKit       0x00000001881d5328 -[UILabel intrinsicContentSize] 
8 UIKit       0x00000001881d5188 -[UIView(UIConstraintBasedLayout) _generateContentSizeConstraints] 
9 UIKit       0x00000001881d4b9c -[UIView(UIConstraintBasedLayout) _updateContentSizeConstraints] 
10 UIKit       0x00000001881d0c3c -[UIView(AdditionalLayoutSupport) updateConstraints] 
11 UIKit       0x00000001881d4940 -[UILabel updateConstraints] 
12 UIKit       0x00000001888f9e8c -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
13 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
14 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
15 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
16 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
17 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
18 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
19 Foundation      0x0000000183a14aa0 -[NSISEngine withBehaviors:performModifications:] 
20 UIKit       0x00000001881d3958 -[UIView(AdditionalLayoutSupport) _withAutomaticEngineOptimizationDisabledIfEngineExists:] 
21 UIKit       0x00000001888fa0c8 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
22 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
23 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
24 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
25 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
26 UIKit       0x00000001888f9dbc -[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
27 UIKit       0x00000001888fa0f4 -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:forSecondPass:] 
28 UIKit       0x00000001881d483c __60-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]_block_invoke 
29 UIKit       0x00000001881d3968 -[UIView(AdditionalLayoutSupport) _withAutomaticEngineOptimizationDisabledIfEngineExists:] 
30 UIKit       0x00000001881d4470 -[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] 
31 UIKit       0x00000001888fa798 -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] 
32 UIKit       0x00000001883d1fcc -[UIView(Hierarchy) _updateConstraintsAsNecessaryAndApplyLayoutFromEngine] 
33 UIKit       0x00000001880cb038 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] 
34 QuartzCore      0x00000001878d1f14 -[CALayer layoutSublayers] 
35 QuartzCore      0x00000001878ccb20 CA::Layer::layout_if_needed(CA::Transaction*) 
36 QuartzCore      0x00000001878cc9e0 CA::Layer::layout_and_display_if_needed(CA::Transaction*) 
37 QuartzCore      0x00000001878cc07c CA::Context::commit_transaction(CA::Transaction*) 
38 QuartzCore      0x00000001878cbdd0 CA::Transaction::commit() 
39 UIKit       0x00000001880ce0dc _UIApplicationHandleEventQueue 
40 CoreFoundation     0x0000000182b305a4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 
41 CoreFoundation     0x0000000182b30038 __CFRunLoopDoSources0 
42 CoreFoundation     0x0000000182b2dd38 __CFRunLoopRun 
43 CoreFoundation     0x0000000182a5cdc0 CFRunLoopRunSpecific 
44 GraphicsServices    0x000000018dbb0088 GSEventRunModal 
45 UIKit       0x0000000188136f60 UIApplicationMain 
46 Olgera       0x000000010016c938 main (main.m:15) 
47 libdyld.dylib     0x0000000197f968b8 start 

我也有問題,如果的UILabel的長度財產造成這或許NSNull對象是另一種類型的對象?

+1

使用它之前,但沒有任何代碼,很難說清楚。您可以嘗試詢問對象是否爲空,然後再詢問它的長度,如下所示:[object isKindOfClass [NSNull class]] – turingtested

+0

@turingtested是我認爲應該在使用長度之前添加此比較。我用了70次左右的長度:)。無論如何感謝 –

+1

添加斷點和日誌消息來查找崩潰。這是我最好的提示。 – turingtested

回答

1

[NSNull null]是用來表示集合類型null值不允許諸如nilNSArrayNSDictionary一個特殊的單值。

如果你知道某個值,例如從一臺服務器來了,可null您需要在嘗試把它當作其他值

NSDictionary *data = ... 
NSString *name = [data objectForKey:@"name"]; 
// This will cause a crash if the value of the 
// `name` key was `null` since objectForKey: 
// will return [NSNull null] 
if ([name length] > 0) { 
// Do something 
} 

你想要做什麼是之前以檢查檢查值不null在好像你問我空物體的長度任何方式

if (name != [NSNull null]) { 
    if ([name length] > 0) { 
    // Do something 
    } 
} 
+0

我從AFNetworking得到NSNull,它引起了我的問題。根本問題是服務器端,如你所說,發送空作爲響應。 所以我用'[serializer setRemovesKeysWithNullValues:YES]'現在空值將是零非NSNull。謝謝 –

相關問題