Iphone 在函数之间传递变量
我只是在学习Objective-C,有一个非常基本的问题。 这是我创建的一个函数,它将简单地保存来自一些用户输入的变量Iphone 在函数之间传递变量,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我只是在学习Objective-C,有一个非常基本的问题。 这是我创建的一个函数,它将简单地保存来自一些用户输入的变量 - (void)standardDatabaseWithName:(NSString*)name host:(NSString*)host username:(NSString*)username password:(NS
- (void)standardDatabaseWithName:(NSString*)name
host:(NSString*)host
username:(NSString*)username
password:(NSString*)password
database:(NSString*)database
port:(NSInteger*)port {
NSString *myName = name;
NSString *myHost = host;
NSString *myUsername = username;
NSString *myPassword = password;
NSString *myDatabase = database;
NSInteger *myPort = port;
}
下面是一个单独的函数,我想用这些信息创建一个新的var,从那里使用它就是我所需要的
- (void)insertStandardConnection {
NSString name = [NewDbModalView standardDatabaseWithName:myName];
NSString host = [NewDbModalView standardDatabaseWithName:myHost];
}
所以这次尝试对我不起作用。有什么建议吗?此时,我一直在挠头。我建议创建一个对象来保存所有信息,并在每次调用该方法时传递该对象,您必须提供所有变量:
[NewDbModalView standardDatabaseWithName:myName host:myHost username:aUsername password:aPassword database:aDatabase port:aPort];
因此,当您调用
[NewDbModalView standardDatabaseWithName:myName]
时,该方法不存在。您在standardDatabaseWithName:…
中声明的变量是该方法的本地变量。您需要将该数据(副本)存储在对象中。不过,看看您的代码,我想知道您是否正在尝试设置默认值?在这种情况下,您可能希望静态全局变量接受这些值,然后需要-(void)standardDatabaseWithName:…
成为+(void)setStandardDatabaseName:(NSString*)name…
在.h文件中,您应该声明属性
@interface standardDatabaseWithNameObject : NSObject{
NSString *myName;
NSString *myHost;
NSString *myUsername ;
NSString *myPassword;
NSString *myDatabase;
NSInteger *myPort;
}
@property (nonatomic, retain) NSString *myName;
@property (nonatomic, retain) NSString *myHost;
@property (nonatomic, retain) NSString *myUsername ;
@property (nonatomic, retain) NSString *myPassword;
@property (nonatomic, retain) NSString *myDatabase;
@property (nonatomic, retain) NSInteger *myPort;
etc...
然后,在您的实现中,您需要合成属性,这些属性将可供使用:
@synthesize myName, myHost, myUsername, myPassword, myDatabase, myPort;
- (void)standardDatabaseWithName:(NSString*)name
host:(NSString*)host
username:(NSString*)username
password:(NSString*)password
database:(NSString*)database
port:(NSInteger*)port {
myName = name;
myHost = host;
myUsername = username;
myPassword = password;
myDatabase = database;
myPort = port;
}
- (void)insertStandardConnection {
NSString name = myName;
NSString host = myHost;
}
- (void) dealloc
{
[myName release];
[myHost release];
[myUsername release];
[myPassword release];
[myDatabase release];
[myPort release];
}
祝你好运嘿,谢谢,这很有道理。因此,我希望我的方法能起作用的原因是,在某一点上,我需要只针对这些变量中的一个。因此,假设我已经完成了您的建议,并且只需要使用用户名。我如何确定目标呢?您可以创建方法来完成这些任务。因此,如果您只需要更改密码,请使用
-setPassword:
方法。嘿,非常感谢。你说得非常清楚。因此,当传递该金额或信息时。创建一个单独的对象可能总是比较干净的,对吗?所有这些都需要是self.myName等,否则上面的代码将不会遵循保留/释放规则…Shane,根据您需要数据的位置,您应该将其存储在该特定级别。如果只在函数中需要它,那么在函数中声明它。如果在对象中需要它,则将其声明为属性。如果您需要全局声明,那么就全局声明。-bbum也是对的,您希望在某个时候释放变量,以免造成内存泄漏。