views:

465

answers:

3

Hi,

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.

+6  A: 

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?

Steve Madsen
+ (NSString*)myString; ... [FooClass myString];
jessecurry
A: 

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.

TechZen
+1  A: 

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

Warrior