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

2019-01-27 05:00发布

问题:

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...