将值传递到另一个类,也无法理解ARC

时间:2014-07-18 01:41:59

标签: ios objective-c

确定。这可能听起来很简单,但我需要帮助。来自Java背景,如果你忍受我,请欣赏它。我会将我的问题分解成更细粒度的形式,供所有人理解。所以我有一个调用数据库的类,它实际上抓住了一个用户密钥。所以我需要通过许多类共享该用户密钥。所以,我的直觉告诉我为变量制作getter和setter。所以这就是我所说的功能:

-(void) getUserKey{

    NSString * showKey = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 0)];

    //Setter for showKey 
    [self showKey:showKey];
    //For experimenting, I attempt to set a property and try to access it.  
    self.SHOWKEY = showKey;

}

以下是我从数据库返回的密钥的getter和setter。

  - (void) showKey:(NSString *)n{

    NSLog(@"%@",n);
    globalShowKey = n;

}


- (NSString*) showPath {

    return globalShowKey;
}

现在这里我遇到麻烦,当我调用这个方法组合其他类的文件路径时,我的全局显示键突然变为零。

-(NSString *)globalShowPath{

    NSString *mainDbPath = [PATH stringByAppendingPathComponent:CLIENT_KEY];
   //Nil
    NSString * showKey = [self showPath];

    NSString *subDirectory = [mainDbPath stringByAppendingPathComponent:showKey];

    return subDirectory;
}

我做错了什么?我需要从这个简单的错误中吸取教训!啊!

这是我的标题供参考:

AppDelegate.h

{    
     NSString * globalShowKey;
}

@property (strong, readwrite) NSString *SHOWKEY;
-(NSString *)globalShowPath;
- (NSString*) showPath;

1 个答案:

答案 0 :(得分:1)

如果你有一个你需要传递数据的类的实例,你可以在.h中设置相关变量

@property NSString *profileKey;
例如,

。然后访问:

[myObject profileKey]; 

并设置,执行

myObject.profileKey = @"my new string";

Objective-c并没有真正使用getter或setter,而是使用上面的方法。它可能是从Java过渡的艰难生活,但Objective-c要好得多。