在我的应用中,公共类中有一个常量,定义为
#define IMG_INIT_URL @"http://www.xxxx/index.php"
现在我需要将其更改为变量。但我的问题是我在代码中频繁使用此常量,例如:
NSString *imgUrlString = [NSString stringWithFormat:@"%@%@",IMG_INIT_URL,[[[storeDet objectForKey:@"store_imgurls"] objectAtIndex:0]objectForKey:@"simg_imgurl"]];
当我将其更改为变量时,我必须通过对象或类方法来检索它,这需要在我的代码中进行大量编辑。那么我可以像现在一样维护代码(即,不使用对象或类方法访问变量)吗?
答案 0 :(得分:1)
您始终可以在.pch
文件中定义它,该文件通常位于Supporting Files
文件夹中,因此您需要在任意位置使用它。我个人还包括一些我需要在不同类中使用的类。然后,我不需要包括我使用的每个班级。
答案 1 :(得分:1)
假设您在名为imgURL
的单例类中定义属性Constants
,您可以这样做:
#define IMG_INIT_URL [Constants sharedInstance].imgURL
另外,请查看XCode在Edit
>下的重构。 Refactor
。
答案 2 :(得分:1)
您可以将定义更改为
#define IMG_INIT_URL [UIApplication.sharedApplication imgInitURL]
然后在您的UIApplication子类或UIApplication类别中添加- (NSString *)imgInitURL
方法。或者,如果更方便的话,将方法添加到应用程序委托中,并相应地修改定义。
答案 3 :(得分:0)
您可以使用NSUserDefault,如下所示
[[NSUserDefaults standardUserDefaults] setValue:@"http://www.xxxx/index.php" forKey:@"IMG_INIT_URL"];
并使用你想要的whereevr访问它。
NSString *aReturnValue = [[NSUserDefaults standardUserDefaults] valueForKey:@"IMG_INIT_URL"];
答案 4 :(得分:0)
您可以通过在AppDelegate类中设置变量来实现。在AppDelegate.h中创建一个给定的变量,
@property (strong, nonatomic) NSString *imageInitURL;
在AppDelegate .m文件中合成
@synthesize imageInitURL;
然后,如果您想最初设置该值,您可以在“application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions”方法中设置该方法
[self setImageInitURL:@"http://www.xxxx/index.php"];
然后你可以通过appDelegate共享实例(如给定的
)从任何类访问它AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate imageInitURL];
您可以从任何类(如给定的
)为此设置新值[appDelegate setImageInitURL:@"your new URL"];
希望这会对你有所帮助:)。