2012-11-19 60 views
0

我对Obj-c相当陌生,我试图弄清楚如何使用全局函数。 我正在研究一个小项目,我在那里谈论一个PHP API,并设置了一个会话cookie,我已经找到了如何获取cookie数据,现在我想让它更有效一些NSString函数最新的cookie值...我很困惑...全局字符串函数

我创建了一个Globals对象类“Globals.h”和“Globals.m”。

如何声明一个函数,然后从另一个文件访问它?

我现在有什么,Globals.h

#import <Foundation/Foundation.h> 
@interface Globals : NSObject 

-(NSString*)GlobalString; 

@end 

和Globals.m:

#import "Globals.h" 
@implementation Globals 
-(NSString *)Globalstring 
{ 
    return @"This is a global string!"; 
} 
@end 

我明白,我必须#IMPORT的Globals.h的文件,其中我想使用这个,但我看不到这个NSString函数。帮帮我?对于像我这样的初学者的提示和教程的好链接?

回答

2

在方法名称使其成为实例方法之前使用-。您可能需要一个类/静态方法,以便可以直接在NSString上调用它。使用+代替:

+(NSString*)GlobalString; 

,并使用它:

NSString *foobar = [NSString GlobalString]; 

还要注意的是Objective-C的方法通常是camelCaseCapsCase

+0

这不是一个坏事情。只要注意这样一个事实,即在访问属性和自我时,类方法有点不同。真正可用的唯一属性是静态变量。这又是一件坏事。 –

0

您需要声明全局的一个实例,然后调用GlobalString:

你可以做GlobalString类方法+ (NSString *)GlobalString或.c文件C函数声明。

0

您可以创建一个包含所有全局变量的全局对象。如果你这样做看看单身模式。通过这样做,如果将其设计为类方法而不是实例方法,则可以将您的globalString取someString = [Globals globalString];

Hovever可以使用您的应用程序委托作为globlal charachter的值和函数的容器。您可以通过

MyAppDelegate *myDelegate = (MyAppDelegate) [[UIApplication sharedApplication] delegate]; 

八方通访问您的委托,然后访问您的全局函数 - 这是现在MyAppDelegate的方法:

returnValue = [myDelegate myGlobalFunction:theParameter];