사용자가 UIAlertview에서 버튼을 클릭하면 전화 앱으로 전화를 걸려고했습니다. 전화 앱이 열렸지만 UIAlertview의 버튼을 클릭하면 원래 앱이 추락했습니다. 아무도 이유를 알고 있습니까? 내가 풀어야 할 모든 것을 공개했는지 확인하려고 했어. 감사! 아래는 코드입니다UIAlertview에서 버튼을 클릭 한 직후에 iOS 앱이 추락했습니다.
-(IBAction)dialButtonPressed:(UIButton *)numberButton
{
if ([company isEqualToString:@"Not Found"]==true){
message = [[UIAlertView alloc] initWithTitle:@"Sorry"
message:@"No replace number found. Would you like to dial anyway?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
message.tag = 0;
if(phoneLinkString)
{
[phoneLinkString release];
phoneLinkString = nil;
}
[message show];
[message autorelease];
phoneLinkString = [[NSString stringWithFormat:@"tel:%@",replace]retain];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
[self release];
message = nil;
if(message.tag == 0 && buttonIndex == 1){
NSURL *phoneLinkURL = [NSURL URLWithString:phoneLinkString];
[[UIApplication sharedApplication] openURL:phoneLinkURL];
}
- (void)dealloc {
[phoneNumberString release];
[phoneNumberLabel release];
[self release];
[message release];
[super dealloc];
}
최신 코드
-(IBAction)dialButtonPressed:(UIButton *)numberButton
{
if ([company isEqualToString:@"Not Found"]==true){
message = [[UIAlertView alloc] initWithTitle:@"Sorry"
message:@"No replace number found. Would you like to dial anyway?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
message.tag = 1;
if(phoneLinkString)
{
[phoneLinkString release];
phoneLinkString = nil;
}
[message show];
[message autorelease];
phoneLinkString = [[NSString stringWithFormat:@"tel:%@",replace]retain];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(message.tag == 1 && buttonIndex == 1){
NSURL *phoneLinkURL = [NSURL URLWithString:phoneLinkString];
[[UIApplication sharedApplication] openURL:phoneLinkURL];
message = nil;
}
}
- (void)dealloc {
[phoneNumberString release];
[phoneNumberLabel release];
[super dealloc];
}
하지만 여전히 UIAlertview의 버튼을 클릭 한 후 추락했다. 오류는 0x3beb85b0 : ldr r3, [r4, # 8] EXC_BAD_ACCESS (코드 = 1, 주소 = 0x7269634f) 어떤 도움을 주시면 감사하겠습니다. 감사!
프로젝트에서 ARC를 사용합니까? – rockstarberlin
모든 곳에서'[self release]'를 제거하십시오 –
@rockstarberlin'retain','release' 또는'autorelease'를 호출하는 코드가 보이면 프로젝트는 ARC를 사용할 수 없습니다. – rmaddy