Ios NSString stringWithFormat崩溃
我有一个行代码,它创建了一个NSString,如下所示Ios NSString stringWithFormat崩溃,ios,objective-c,Ios,Objective C,我有一个行代码,它创建了一个NSString,如下所示 NSString *paramString = [NSString stringWithFormat:@"?user_id=%@&x=%@&y=%@",_selectedID, _selectedX,[MyModel shared].currentUser.userID]; 我确实收到了如下事故报告: crash in : Thread 0 crashed: libobjc.dylib objc_msgSend
NSString *paramString = [NSString stringWithFormat:@"?user_id=%@&x=%@&y=%@",_selectedID, _selectedX,[MyModel shared].currentUser.userID];
我确实收到了如下事故报告:
crash in :
Thread 0 crashed:
libobjc.dylib objc_msgSend + 16
CoreFoundation _NSDescriptionWithLocaleFunc + 68
CoreFoundation _CFStringAppendFormatCore + 6004
CoreFoundation _CFStringCreateWithFormatAndArgumentsAux + 116
Foundation [NSPlaceholderString initWithFormat:locale:arguments] + 160
currentUser中的用户ID是一个NSString。
\u selectdID
和\u selectedX
都是从VC1-->VC2-->VC3传递的NSString。在VC2和VC3中,都声明为@property(非原子,赋值)
然而,根据崩溃报告,这种崩溃只发生在约1%的用户身上,并且所有用户都在iOS 7.1.1上
我试图模拟它,但没有运气。是因为内存被释放了吗?是否有任何方法可以模拟这种情况?尝试使用复制或强修饰符声明NSString属性,以确保它们在内存中。它们可以被解除分配,并且它们的指针引用另一个var问题是它之后被解除引用。请使用关键字
strong
,这样它就不会被解除引用 这可能是因为在创建字符串时,\u selectedID
或\u selectedX
已被解除分配。为什么要将它们声明为assign
?您应该将它们声明为strong
,这样当您仍在使用它们时,它们就不会被解除分配。