저는 Xcode에서 NSNotificationCenter
으로 작업 중이므로 userInfo
을 사용하여 NSDictionary
을 내 알림에 첨부하려했습니다. 나는 응용 프로그램을 실행하고 알림을 게시 할 때NSArray는 두 개 이상의 객체가있는 경우 응용 프로그램을 중단합니다
NSArray *objects = [NSArray arrayWithObjects:@"Example Name", @"Example Description", @"Example Date", nil];
NSArray *keys = [NSArray arrayWithObjects:@"name", @"description", @"date", nil];
NSDictionary *dict = [NSDictionary
dictionaryWithObjects:objects
forKeys:keys];
[[NSNotificationCenter defaultCenter] postNotificationName:@"Notification" object:nil userInfo:dict];
, 그것은 라인에 충돌 :
NSArray *keys = [NSArray arrayWithObjects:@"name", @"description", @"date", nil];
가 나중에 배열 크기가 2 개체를 초과하는 경우, 응용 프로그램이 충돌 할 것으로 나타났다.
코드를 아래의 스 니펫으로 변경하면 작동 할 것입니다.
NSArray *objects = [NSArray arrayWithObjects:@"Example Name", @"Example Description", nil];
NSArray *keys = [NSArray arrayWithObjects:@"name", @"description", nil];
NSDictionary *dict = [NSDictionary
dictionaryWithObjects:objects
forKeys:keys];
[[NSNotificationCenter defaultCenter] postNotificationName:@"Notification" object:nil userInfo:dict];
내가이 문제를 해결할 수있는 방법이 있습니까? 아니면 내가 끔찍한 일을하고 있습니까?
ARC를 사용하도록 설정 했습니까? 알림을 게시하기 전에 대괄호가 누락되어 있습니다. 복사하여 붙여 넣기 만하는 실수입니까? –
작동해야합니다 - 사용중인 개체가 유효합니까? – Vervious
이 예제는 문자열 리버럴을 사용하므로 유효한 객체 여야합니다. 사고가 났을 때 예외가 있습니까? 또는 EXC_BAD_ACCESS? 스택 트레이스는 어떻게 생겼습니까? – eyebrowsoffire