2011-06-30 4 views
1

Je voudrais utiliser ce code pour connaître mon ip, mais j'ai 2 avertissements que je ne peux pas corriger pour le moment. J'ai également trouvé ce poste: Accessing IP Address with NSHostNSHost "currentHost" non reconnu

mais je voulais juste comprendre pourquoi ce code ne fonctionne pas, si quelqu'un a une réponse?

voici mon code:

 -(NSString*)getAddress { 
      NSString *iphone_ip = [NSString initWithString:@"127.0.0.1"]; 
      NSHost* myhost =[NSHost currentHost]; 
      if (myhost) 
      { 
       NSString *ad = [myhost address]; 
       if (ad) 
        strcpy(iphone_ip,[ad cStringUsingEncoding: NSISOLatin1StringEncoding]); 
      } 
      return [NSString stringWithFormat:@"%s",iphone_ip]; 
     } 

le premier avertissement est:

NSHost * myhost = [NSHost currentHost]

, en disant que currentHost est pas reconnu. Le second est sur

NSString * ad = [adresse myhost];

"types incompatibles obj-c initialisation « struct NSData ", attendu 'struct nSTRING ""

je peux imaginer le deuxième avertissement pourrait disparaître lorsque le premier avertissement est résolu ...

Merci pour votre aide

Paul

+0

Chaque fois que vous avez une chaîne statique qui n'a pas besoin de modification n'utilisez pas de méthodes NSString juste stocker la chaîne! 'NSString * iphone_ip = @" 127.0.0.1 ";' et ne jamais appeler une méthode qui commence par init sans appeler alloc en premier, je suis sûr que j'ai aussi des avertissements pour ce compilateur car ce n'est pas une méthode de classe. – Joe

+0

@Joe, merci oui il est logique que je l'ai écrit un peu trop vite – Paul

Répondre

2

Comme vous pouvez le voir dans la documentation ici, il est documenté sous l'OS X bibliothèque.

NSHost

Il est en fait une API privée sur l'iPhone. Vous devriez toujours pouvoir l'utiliser, mais vous obtiendrez des avertissements de compilateur.

Si vous devez trouver votre IPAddress, vous pouvez utiliser un NSURLRequest et NSURLConnection en utilisant l'adresse suivante: WhatIsMyIP API

Cette page est là spécifiquement pour les programmeurs à utiliser. Ils vous demandent de ne pas faire un ping plus d'une fois toutes les 300 secondes. Vous pouvez trouver une FAQ ici: FAQ

+0

Avec les avertissements du compilateur, vous obtiendrez le démarrage d'Apple lorsque vous allez le soumettre à l'App Store. – Joe

+0

Ouais, ça aussi. – thomashw

+0

@thomashw merci, la chose est, j'ai pris cet exemple de appsamuck.com, il semble que beaucoup de leur code ont plusieurs méthodes "dépréciées" ou juste un code qui ne fonctionne pas. Savez-vous ce que je pourrais faire pour que ça marche? – Paul