Ios #以字符串格式定义值?

Ios #以字符串格式定义值?,ios,iphone,macros,nsstring,Ios,Iphone,Macros,Nsstring,我有一个定义: hashdefine kPingServerToSeeIfInternetIsOn "http://10.0.0.8" 然后在代码I中使用它: NSString *theURL = [NSString stringWithFormat:@"%@", kPingServerToSeeIfInternetIsOn]; 我有个例外 为应用程序定义常量并在NSStringinit中使用它的最佳方法是什么?创建头文件,例如MyAppConstants.h。添加以下内容: extern

我有一个定义:

hashdefine kPingServerToSeeIfInternetIsOn  "http://10.0.0.8"
然后在代码I中使用它:

NSString *theURL = [NSString stringWithFormat:@"%@", kPingServerToSeeIfInternetIsOn];
我有个例外


为应用程序定义常量并在
NSString
init中使用它的最佳方法是什么?

创建头文件,例如
MyAppConstants.h
。添加以下内容:

extern NSString * const kPingServerToSeeIfInternetIsOn;
在定义中,例如
MyAppConstants.m
,添加:

NSString * const kPingServerToSeeIfInternetIsOn = @"http://10.0.0.8";
在类实现中,添加:

#import "MyAppConstants.h"

您可以像以前一样使用常量。

创建头文件,例如
MyAppConstants.h
。添加以下内容:

extern NSString * const kPingServerToSeeIfInternetIsOn;
在定义中,例如
MyAppConstants.m
,添加:

NSString * const kPingServerToSeeIfInternetIsOn = @"http://10.0.0.8";
在类实现中,添加:

#import "MyAppConstants.h"
您可以像以前一样使用该常量。

您已经将其定义为C字符串

如果希望将其作为Objective-C字符串,则需要

#define kPingServerToSeeIfInternetIsOn @"http://10.0.0.8"
您已将其定义为C字符串

如果希望将其作为Objective-C字符串,则需要

#define kPingServerToSeeIfInternetIsOn @"http://10.0.0.8"

虽然我强烈同意使用常量而不是定义,但我强烈反对创建类似“MyAppConstants.h”的文件。这使得代码重用非常困难。将常量放在逻辑上提供它们的文件中,或者至少放在使用它们的文件中。但是不要为所有系统常量创建一个中心转储区。在类的同一个文件中有一个放置常量的位置。但我确实发现,只有少数头文件(由较大的代码函数组织)暗示了我的常量,这使我的故障排除变得更加容易。寻找它们或者从不同的地方重构一堆它们都不是一件有趣的事。至少,为常量开发一个一致且信息丰富的命名方案,并像胶水一样坚持使用它。虽然我强烈同意使用常量而不是定义,但我强烈反对创建一个类似“MyAppConstants.h”的文件。这使得代码重用非常困难。将常量放在逻辑上提供它们的文件中,或者至少放在使用它们的文件中。但是不要为所有系统常量创建一个中心转储区。在类的同一个文件中有一个放置常量的位置。但我确实发现,只有少数头文件(由较大的代码函数组织)暗示了我的常量,这使我的故障排除变得更加容易。寻找它们或者从不同的地方重构一堆它们都不是一件有趣的事。至少,为常量开发一个一致且信息丰富的命名方案,并像胶水一样坚持使用。顺便说一下,您可以使用类似“NSString*theURL=kpinservertoseeifiinternetison”或更简单的方式简化此特定代码,但要用kpinservertoseeifiinternetison替换对URL的任何引用。顺便说一下,您可以使用类似“NSString*theURL=kPingServerToSeeifiInternetison”的内容来简化此特定代码;或者更简单地说,但可以使用kPingServerToSeeifiInternetison替换对URL的任何引用。