Objective-C: How Can I Access String Variable As a Global?

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 06:36:24

问题


I am new to iPhone development. I want to access a string variable in all the class methods, and I want to access that string globally. How can I do this?

Please help me out.


回答1:


You can achieve that by implementing getter and setters in the delegate class.

In delegate .h file

Include UIApplication delegate

 @interface DevAppDelegate : NSObject <UIApplicationDelegate>

  NSString * currentTitle;

 - (void) setCurrentTitle:(NSString *) currentTitle;
 - (NSString *) getCurrentTitle; 

In Delegate implementation class .m

 -(void) setCurrentLink:(NSString *) storydata{
currentLink = storydata;

}

-(NSString *) getCurrentLink{
if ( currentLink == nil ) {
    currentLink = @"Display StoryLink";
}
return currentLink;
}

So the variable you to assess is set in the currentlink string by setters method and class where you want the string ,just use the getter method.

All the best




回答2:


Leaving aside the issue of global variables and if they are good coding practice...

Create your string outside of any Objective-C class in a .m file in your project:

NSString *myGlobalString = @"foo";

Then put the declaration in a header file that is included by every other file that wants to access your string:

extern NSString *myGlobalString;

OK, well I can't leave it entirely aside. Have you considered putting your "global" string somewhere else, perhaps inside your application delegate as a (possibly read-only) property?




回答3:


The preferred methods for creating a global variable are:

  1. Create a singleton class that stores the variables as an attributes.
  2. Create a class that has class methods that return the variables. Put the class interface in the universal header so all classes in the project inherit it.

The big advantage of method (2) is that it is encapsulated and portable. Need to use classes that use the global in another project? Just move the class with the variables along with them.




回答4:


I posted an article about my methodology for doing this:

http://www.pushplay.net/2011/02/quick-tip-global-defines/

This is something I primarily use for notification keys. Creating a globals.h file and adding it to the (your_project_name)_Prefix.pch file will ensure it is accessible globally...



来源:https://stackoverflow.com/questions/2238103/objective-c-how-can-i-access-string-variable-as-a-global

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!