obliga a la aplicación a terminar en iPhone

Estoy desarrollando una aplicación para iPhone que se basa completamente en datos web.

Si no está conectado a Internet, la aplicación no sirve de nada.

Entonces, quiero terminar la aplicación cuando no se encuentra la connection.

NSURL *tmpURl=[NSURL URLWithString:[NSString stringWithFormat:@"%@search.php",[iGolfAppDelegate getServerPath]]]; NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:tmpURl]; con=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; if(con){ myWebData=[[NSMutableData data] retain]; } else { //Yes I will provide two buttons on alertview "retry" & "close", & when user //taps on "close" => application should terminate. // i will send alertview & when user taps on button close then // what to write for terminating application? // Ok Ok. Don't terminate. User will terminate. // user is owner of iPhone // let him choose what to do // wait till wifi connects } 

La pregunta es cómo terminar la aplicación.

¿Es exit(0) solo la opción para terminar la aplicación o hay alguna otra opción disponible?

Apple es absolutamente claro sobre este tema:

No se proporciona una API para finalizar con gracia una aplicación de iPhone. Bajo el sistema operativo iPhone, el usuario presiona el button Inicio para cerrar las aplicaciones. Si su aplicación tiene condiciones en las que no puede proporcionar su function prevista, el enfoque recomendado es mostrar una alerta para el usuario que indique la naturaleza del problema y las posibles acciones que podría realizar el usuario: activar WiFi, habilitar Servicios de location, etc. Permitir que el usuario termine la aplicación a su propia discreción.

Vea las preguntas y respuestas técnicas QA1561

Puede considerar informar al usuario que no puede usar su aplicación sin una connection de networking activa. Acaba de terminar la request parece una forma muy antipática de hacer esto; el usuario simplemente verá la aplicación "desaparecer".

Todas las aplicaciones de buen comportamiento que haya visto darán al less una notificación antes de terminar.

Le aconsejaría que reconsidere por 3 razones

  1. Puede parecer que su aplicación se bloqueó.
  2. El usuario puede get una connection a internet mientras su aplicación está activa. En este caso, un 'rebash' sería lo mejor.
  3. Creo que Apple puede no aceptar la aplicación si lo hace. Seguramente no es lo que harían si una aplicación de Apple necesitara una connection a Internet, y lo hacen para ver qué hará una aplicación sin una connection.

Si (por la razón que sea) quiera hacerlo, puede usar.

 exit(0); 

Siempre podrías dividir por cero. Como beneficio adicional, la implementación reflejará lo que es una buena idea.

Espero que esta útil [[NSThread mainThread] exit];

¡Si terminas, parecerá que tu aplicación se ha bloqueado!

Es mejor poner un post que diga que no hay connection a Internet y que les da la opción de volver a intentarlo (en caso de que puedan get una connection a Internet), o elegir por sí mismos

No deberías hacer esto. Eche un vistazo a "Detención" en las Pautas de la Interfaz Humana ya que posiblemente no pueda enviar una aplicación que lo haga o, al less, proporcione una experiencia extraña para el usuario.

El enlace también muestra la forma correcta de manejar esto, como en la aplicación iTunes Music Store.

Su aplicación será rechazada si termina cuando no puede acceder a Internet.

Lo siento.

t