什么是二传手和吸气鬼?

lab*_*b12 3 iphone getter setter objective-c

对于objective-c,我并没有真正了解Setters和Getters.有人能为初学者提供一个好的指南吗?我注意到这在尝试访问另一个类中的变量时发挥作用,我现在正尝试这样做.我有两个类,比如A和B.我在A中有一个带有@property(retain)NSString*变量的NSString变量.然后我继续合成它.现在,当视图在类中加载时,我将变量的值设置为"hello".现在我想要做的是从类B中访问字符串.我已经导入了类A,并使用以下代码对其进行了初始化:

AClass *class = [[AClass alloc] init];
NSLog(@"Value:%@", class.variable);
[class release];
Run Code Online (Sandbox Code Playgroud)

但是在调试器中它返回一个值"(null)",我真的不明白.如果有人能带领我走上正确的道路,我将非常感激.

谢谢,

凯文

Bil*_*rey 7

您感兴趣的特定部分是声明属性.

b的界面应如下所示:

@interface b : NSObject {
    NSString *value;
}

@property (nonatomic, retain) NSString *value;

- (id) initWithValue:(NSString *)newValue;

@end
Run Code Online (Sandbox Code Playgroud)

你的b实现应该是这样的:

@implementation b

@synthesize value;

- (id) initWithValue:(NSString *)newValue {
    if (self != [super init])
        return nil;

    self.value = newValue;

    return self;
}

@end
Run Code Online (Sandbox Code Playgroud)

然后你可以这样称呼:

b *test = [[b alloc] initWithValue:@"Test!"];
NSLog(@"%@", test.value);
Run Code Online (Sandbox Code Playgroud)