iphone - 在 iPhone 上崩溃,但在模拟器上没有崩溃

标签 iphone crash ios-simulator

找出 iPhone 和模拟器之间的许多差异确实令人难以置信。我花了几个小时试图弄清楚为什么我的应用程序在模拟器上运行但在我的 iPhone 设备上崩溃了。事实证明罪魁祸首是sortedArrayUsingDescriptors。还有这样的get-you吗?请与我分享。

与您分享该问题和修复方法:

<小时/>

代码在 iPhone 上崩溃,但在模拟器上没有崩溃

NSSortDescriptor* aDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"count" ascending:NO] autorelease];
NSArray* anNsArray = [[NSArray alloc] init];
NSArray* aSortedNsArray = [[NSArray alloc] init];

aSortedNsArray = [anNsArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:aDescriptor]];

问题出在[NSArray arrayWithObject:aDescriptor]

<小时/>

修复方法是创建一个数组来存储它:

NSArray* descriptorArray = [[NSArray alloc] initWithObjects:countDescrp, nil];
aSortedNsArray = [anNsArray sortedArrayUsingDescriptors:descriptorArray];

最佳答案

NSSortDescriptor* aDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"count" ascending:NO] autorelease]; 
NSArray* anNsArray = [[NSArray alloc] init];
NSArray* aSortedNsArray = [[NSArray alloc] init];

aSortedNsArray = [anNsArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:aDescriptor]];

这是一个错误的初始化机制,如果代码片段完整,则问题出在空的 anNsArray 对象上。

您也不需要初始化 aSortedNsArray。

所以应该是:

NSSortDescriptor* sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"count" ascending:NO] autorelease]; 

// Assume you return it as array of objects from a property or method
NSArray *array = [self objects]; 
NSArray *sortedArray = nil;
if ([array count] > 0) {
     sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
}

// Then you check the sortedArray
if (sortedArray == nil || [sortedArray count] == 0)
   [self somethingIsWrong];     

arrayWithObject: (自动释放) 或 initWithObject: (手动) 只是分配 NSArray 对象的不同方式。正常情况下不会导致崩溃。因为你关心的是sortedArray不保留描述符数组对象。

关于iphone - 在 iPhone 上崩溃,但在模拟器上没有崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775890/

相关文章:

iOS密码才能使用该应用程序?

ios - 双击时如何切换到前置摄像头(SWIFT)

iphone - 在 iPhone 上绘图

flash - 播放mp3流几个小时后Adobe Flash崩溃

按下主页按钮时 iOS 应用程序崩溃(当应用程序暂停时)

xcode - 我收到此错误 NSURLErrorDomain 错误 -999

ios - 当用户按下按钮时显示 SplitViewController?

Xcode:iOS Simulator Dev Menu 无法打开

ios - Xcode 7.3 iOS 8 模拟器调试 View 层次结构为空白

java - android studio 媒体播放器 null 对象引用