gpt4 book ai didi

ios - 由于未捕获的异常'NSInvalidArgumentException Xcode 9.1/iPhone X而终止应用程序

转载 作者:行者123 更新时间:2023-12-01 19:48:21 26 4
gpt4 key购买 nike

我的应用程序可以在我的iPhone设备和iPad以及所有模拟器和iOS上完美运行,但在iPhone X模拟器上除外。它在应用程序启动时崩溃,并显示以下错误日志;

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'

*** First throw call stack:
(
0 CoreFoundation 0x00000001127aa1ab __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000011078af41 objc_exception_throw + 48
2 CoreFoundation 0x00000001127e9f9c _CFThrowFormattedException + 194
3 CoreFoundation 0x00000001126beb41 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 321
4 CoreFoundation 0x000000011281d11b __createDictionary + 43
5 CoreFoundation 0x0000000112728cff +[NSDictionary dictionaryWithObject:forKey:] + 47
6 ChristmasCountdown 0x000000010dc776a4 -[Home viewDidLoad] + 20900
7 UIKit 0x0000000115cb38a5 -[UIViewController loadViewIfRequired] + 1235
8 UIKit 0x0000000115cfb1ec -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 68
9 UIKit 0x0000000115cfb528 -[UINavigationController _startTransition:fromViewController:toViewController:] + 153
10 UIKit 0x0000000115cfc63f -[UINavigationController _startDeferredTransitionIfNeeded:] + 841
11 UIKit 0x0000000115cfd8c3 -[UINavigationController __viewWillLayoutSubviews] + 150
12 UIKit 0x0000000115f56a49 -[UILayoutContainerView layoutSubviews] + 231
13 UIKit 0x0000000115bdf6f5 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1439
14 QuartzCore 0x0000000113b933ee -[CALayer layoutSublayers] + 153
15 QuartzCore 0x0000000113b974dd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
16 QuartzCore 0x0000000113b1fded _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 365
17 QuartzCore 0x0000000113b4b704 _ZN2CA11Transaction6commitEv + 500
18 UIKit 0x0000000115b29d3a __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 141
19 CoreFoundation 0x000000011274d18c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
20 CoreFoundation 0x000000011273196b __CFRunLoopDoBlocks + 203
21 CoreFoundation 0x0000000112731144 __CFRunLoopRun + 1300
22 CoreFoundation 0x00000001127309b9 CFRunLoopRunSpecific + 409
23 GraphicsServices 0x000000011467a9c6 GSEventRunModal + 62
24 UIKit 0x0000000115b0e5e8 UIApplicationMain + 159
25 ChristmasCountdown 0x000000010dc724df main + 111
26 libdyld.dylib 0x000000011594fd81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

我不明白的是,其他模拟器可以正常工作,在手机和平​​板电脑上运行,并且具有相同的iOS版本(11.1),因此似乎仅适用于iPhoneX。

viewDidLoad;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.

tag = 1000;
str_Type = @"Current";

//Set Navigation Bar Title
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
label.text = @"Christmas Countdown";
label.textColor = [UIColor whiteColor];
self.navigationItem.titleView = label;

//Hide Not Required UILabel's
lbl_Time.hidden = YES;
lbl_Text.hidden = YES;
lbl_Days.hidden = YES;
lbl_DaysText.hidden = YES;
lbl_Weeks.hidden = YES;
lbl_WeeksText.hidden = YES;
img_DividerImage.hidden = YES;

//Initialize NSArray object with Images
arr_OfSanta = @[[UIImage imageNamed:@"santa1"],[UIImage imageNamed:@"santa2"],[UIImage imageNamed:@"santa3"],[UIImage imageNamed:@"santa4"],[UIImage imageNamed:@"santa5"],[UIImage imageNamed:@"santa6"]];

//Initialize arr_MusicFiles & arr_MusicText Array
arr_MusicFiles = @[@"auld-lang-syne-piano",@"ave-maria",@"away-in-a-manger-epiano",@"carol-of-the-bells",@"come-from-stars",@"ding-dong-merrily",@"god-rest-ye-merry-gentlemen",@"herald",@"jingle-bells-country",@"joy-to-the-world",@"o-christmas-tree",@"o-come-all-ye-faithful",@"o-holy-night",@"silent-night-piano",@"we-wish-you-a-merry-christmas"];

arr_MusicText = @[@"Auld Land Syne Piano",@"Ave Maria",@"Away In A Manger Epiano",@"Carol Of the Bells",@"Come From Stars",@"Ding Dong Merrily",@"God Rest ye Merry Gentlemen",@"Herald",@"Jingle Bells Country",@"Joy To the World",@"O Christmas Tree",@"O Come All Ye Faithful",@"O Holy Night",@"Silent Night Piano",@"We Wish You A Merry Christmas"];

arr_OfCountryCode = @[@"AF",@"AL",@"DZ",@"AS",@"AD",@"AO",@"AI",@"AQ",@"AG",@"AR",@"AM",@"AW",@"AC",@"AU",@"AT",@"AZ",@"BS",@"BH",@"BD",@"BB",@"BY",@"BE",@"BZ",@"BJ",@"BM",@"BT",@"BO",@"BA",@"BW",@"BV",@"BR",@"IO",@"VG",@"BN",@"BG",@"BF",@"BI",@"KH",@"CM",@"CA",@"IC",@",CV",@"BQ",@"KY",@"CF",@"EA",@"TD",@"CL",@"CN",@"CX",@"CP",@"CC",@"CO",@"KM",@"CD",@"CG",@"CK",@"CR",@"HR",@"CU",@"CW",@"CY",@"CZ",@"CI",@"DK",@"DG",@"DJ",@"DM",@"DO",@"EC",@"EG",@"SV",@"GQ",@"ER",@"EE",@"ET",@"FK",@"FO",@"FJ",@"FI",@"FR",@"FG",@"PF",@"TF",@"GA",@"GM",@"GE",@"DE",@"GH",@"GI",@"GR",@"GL",@"GD",@"GP",@"GU",@"GT",@"GG",@"GN",@"GW",@"GY",@"HT",@"HM",@"HN",@"HK",@"HU",@"IS",@"IN",@"ID",@"IR",@"IQ",@"IE",@"IM",@"IL",@"IT",@"JM",@"JP",@"JE",@"JO",@"KZ",@"KE",@"KI",@"XK",@"KW",@"KG",@"LA",@"LV",@"LB",@"LS",@"LR",@"LY",@"LI",@"LT",@"LU",@"MO",@"MK",@"MG",@"MW",@"MY",@"MV",@"ML",@"MT",@"MH",@"MQ",@"MR",@"MU",@"YT",@"MX",@"FM",@"MD",@"MC",@"MN",@"ME",@"MS",@"MA",@"MZ",@"MM",@"NA",@"NR",@"NP",@"NL",@"NC",@"NZ",@"NI",@"NE",@"NG",@"NU",@"NF",@"KP",@"MP",@"NO",@"OM",@"PK",@"PW",@"PS",@"PA",@"PG",@"PY",@"PE",@"PH",@"PN",@"PL",@"PT",@"PR",@"QA",@"RO",@"RU",@"RW",@"RE",@"WS",@"SM",@"SA",@"SN",@"RS",@"SC",@"SL",@"SG",@"SX",@"SK",@"SI",@"SB",@"SO",@"ZA",@"GS",@"KR",@"SS",@"ES",@"LK",@"BL",@"SH",@"KN",@"LC",@"MF",@"PM",@"VC",@"SD",@"SR",@"SJ",@"SZ",@"SE",@"CH",@"SY",@"ST",@"TW",@"TJ",@"TZ",@"TH",@"TL",@"TG",@"TK",@"TO",@"TT",@"TA",@"TN",@"TR",@"TM",@"TC",@"TV",@"UM",@"VI",@"UG",@"UA",@"AE",@"GB",@"US",@"UY",@"UZ",@"VU",@"VA",@"VE",@"VN",@"WF",@"EH",@"YE",@"ZM",@"ZW",@"AX"];

//UIView Width
int width = self.view.frame.size.width;

//Current Device Model
NSString *deviceType = [UIDevice currentDevice].model;

//this will load wether or not they bought the in-app purchase
areAdsRemoved = [[NSUserDefaults standardUserDefaults] boolForKey:@"areAdsRemoved"];
[[NSUserDefaults standardUserDefaults] synchronize];

if ([deviceType isEqualToString:@"iPad"]) {
if(areAdsRemoved){
[self.scrolView_Bottom setConstant:0];

//Hide BannerView
self.bannerView.hidden = YES;
self.btn_RemoveAds.hidden = YES;
//if they did buy it, set the background to blue.

} else {

[self.scrolView_Bottom setConstant:100];

//Display BannerView
self.bannerView.hidden = NO;
}

//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 365);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 365);
[self scrollViewDidScroll:self.srl_ScrollView];

//Set Font Text Size
objFont = [UIFont boldSystemFontOfSize:20.0];

//Adjust Constraints
[self.view_Bottom setConstant:100];
[self.img_Top setConstant:140];
[self.btnLeft_Width setConstant:150];
[self.btnLeft_Height setConstant:200];
[self.btnRight_Height setConstant:200];
[self.btnRight_Width setConstant:150];
[self.bannerView_Height setConstant:100];

//Set UILabel Font Size
lbl_AllDays.font = [UIFont systemFontOfSize:30.0];
lbl_AllHours.font = [UIFont systemFontOfSize:30.0];
lbl_AllMinutes.font = [UIFont systemFontOfSize:30.0];
lbl_AllSeconds.font = [UIFont systemFontOfSize:30.0];
lbl_Time.font = [UIFont systemFontOfSize:55];
lbl_Text.font = [UIFont systemFontOfSize:35];
lbl_Weeks.font = [UIFont systemFontOfSize:55];
lbl_WeeksText.font = [UIFont systemFontOfSize:35];
lbl_Days.font = [UIFont systemFontOfSize:55];
lbl_DaysText.font = [UIFont systemFontOfSize:35];

//Add Images in UIScrollView
self.img_ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.srl_ScrollView.frame.size.height)];
self.img_ImageView.contentMode = UIViewContentModeScaleAspectFit;
self.img_ImageView.clipsToBounds = YES;
self.img_ImageView.image = [arr_OfSanta objectAtIndex:0];
[self.srl_ScrollView addSubview:self.img_ImageView];
} else {

if(areAdsRemoved){
//Adjust UIScrollView Constraint
[self.scrolView_Bottom setConstant:0];

//Hide BannerView
self.bannerView.hidden = YES;

self.btn_RemoveAds.hidden = YES;
//if they did buy it, set the background to blue.
} else {
//Adjust UIScrollView Constraint
[self.scrolView_Bottom setConstant:50];

//Display BannerView
self.bannerView.hidden = NO;
}

//Current Device Screen Size
int height = [[UIScreen mainScreen] bounds].size.height;

//Set UILabelText Font Size, If Screen height 480
if (height == 480) {
//Set Font Text Size
objFont = [UIFont boldSystemFontOfSize:9.0];

//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 150);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 150);

//Adjust Constraints
[self.img_Top setConstant:50];

//Set UILabel Font Size
lbl_AllDays.font = [UIFont systemFontOfSize:12.0];
lbl_AllHours.font = [UIFont systemFontOfSize:12.0];
lbl_AllMinutes.font = [UIFont systemFontOfSize:12.0];
lbl_AllSeconds.font = [UIFont systemFontOfSize:12.0];
lbl_Time.font = [UIFont systemFontOfSize:25];
lbl_Text.font = [UIFont systemFontOfSize:15];
lbl_Weeks.font = [UIFont systemFontOfSize:25];
lbl_WeeksText.font = [UIFont systemFontOfSize:15];
lbl_Days.font = [UIFont systemFontOfSize:25];
lbl_DaysText.font = [UIFont systemFontOfSize:15];
}

//Change Divider Image Top, When screen size grater than 480
if (height == 568) {
//Set Font Text Size
objFont = [UIFont boldSystemFontOfSize:9.0];

//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 150);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 150);

[self.img_Top setConstant:70];
} else if (height == 667) {
//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 240);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 240);

//Set Font Text Size
objFont = [UIFont boldSystemFontOfSize:11.0];
[self.img_Top setConstant:90];
} else if (height == 736) {
//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 270);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 270);

objFont = [UIFont boldSystemFontOfSize:11.0];
[self.img_Top setConstant:100];
}

//Add Images in UIScrollView
self.img_ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.srl_ScrollView.frame.size.height)];
self.img_ImageView.contentMode = UIViewContentModeScaleAspectFit;
self.img_ImageView.clipsToBounds = YES;
self.img_ImageView.image = [arr_OfSanta objectAtIndex:0];
[self.srl_ScrollView addSubview:self.img_ImageView];
}

//Hide MKMapView
self.mapView.hidden = YES;

//Zoom In & Zoom Out Animation
[UIView animateWithDuration:0 animations:^{
lbl_AllDays.transform = CGAffineTransformMakeScale(0.01, 0.01);
lbl_AllHours.transform = CGAffineTransformMakeScale(0.01, 0.01);
lbl_AllMinutes.transform = CGAffineTransformMakeScale(0.01, 0.01);
lbl_AllSeconds.transform = CGAffineTransformMakeScale(0.01, 0.01);
}completion:^(BOOL finished){
// Finished scaling down imageview, now resize it
[UIView animateWithDuration:0.8 animations:^{
lbl_AllDays.transform = CGAffineTransformIdentity;
lbl_AllHours.transform = CGAffineTransformIdentity;
lbl_AllMinutes.transform = CGAffineTransformIdentity;
lbl_AllSeconds.transform = CGAffineTransformIdentity;
}completion:^(BOOL finished){
NSLog(@";Finished...");
}];
}];

//Set NSTimer to Call countdownTracker method to show pending time in Christmas.
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countdownTracker:) userInfo:nil repeats:YES];

//Add font object to Dictionary
NSDictionary *dictAttributes = [NSDictionary dictionaryWithObject:objFont forKey:NSFontAttributeName];

//Set dictionary to the titleTextAttributes
[self.segmentControl setTitleTextAttributes:dictAttributes forState:UIControlStateNormal];
[self.segmentControl setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateSelected];

//Customize UISegmentControl
[self.segmentControl setBackgroundImage:[UIImage imageNamed:@"NavigatinBackground"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

//Customize MKMapView to track Santa Location
geocoder = [[CLGeocoder alloc] init];
cl_LocationManager = [[CLLocationManager alloc] init];
cl_LocationManager.delegate = self;
cl_LocationManager.desiredAccuracy = kCLLocationAccuracyBest;
//[cl_LocationManager requestWhenInUseAuthorization];
[cl_LocationManager startUpdatingLocation];

//Hide UIView's mapView
self.mapView.hidden = YES;
self.musicView.hidden = YES;

}

此行导致iPhone X崩溃
 //Add font object to Dictionary
NSDictionary *dictAttributes = [NSDictionary dictionaryWithObject:objFont forKey:NSFontAttributeName];

最佳答案

在我的代码中,您可以看到硬编码的字体值,例如;

if (height == 568) {
//Set Font Text Size
objFont = [UIFont boldSystemFontOfSize:9.0];

//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 150);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 150);

添加特定于iPhone X尺寸的条目非常有效;
//iPhoneX
} else if (height == 812) {
//Set UIScrollView Content Size
self.srl_ScrollView.frame = CGRectMake(0, self.srl_ScrollView.frame.origin.y, self.view.frame.size.width, 270);
self.srl_ScrollView.contentSize = CGSizeMake(6*width, 270);

objFont = [UIFont boldSystemFontOfSize:11.0];
[self.img_Top setConstant:100];
}

关于ios - 由于未捕获的异常'NSInvalidArgumentException Xcode 9.1/iPhone X而终止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com