Java keyword this in Objective C



第一天学习Objective-C,但有Java背景。我想对我的参数使用相同的变量名称,就像对我的实例变量所做的一样。在java中,我们这样做

public class Person
{
    private String name;
    private String age;
    public void setName(String name)
    {
        this.name = name;
    }
    public void setAge(String age)
    {
        this.age = age;
    }
}

到目前为止,在目标 c 中,我有这个

@interface Person : NSObject
{
    int age;
    int name;
}
    -(void) setAge:(int) age;
    -(void) setName:(int) name;
    -(int) getAge;
    -(int) getName;
@end
@implementation Person
-(void) setName:(int) w
{
    weight = w;
}
-(void) setAge:(int) a
{
    age = a;
}
-(int) getName
{
    return name;
}
-(int) getAge
{
    return age;
}
@end

在 Objective-C 中,您可以定义自己的访问器或使用@syntehsize自动为您创建它们。

在要手动定义访问器的情况下,资源库的声明如下:

- (void)setName:(NSString *)name {
    self.name = name;
}
- (void)setAge:(NSInteger)age {
    self.age = age;
}

对于 getter,您只需按如下方式声明它们:

- (NSString *)name {
    return self.name;
}
- (NSInteger)age {
    return self.age;
}

Objective-C 程序员不喜欢打字,所以我们这样做:

@interface Person : NSObject
@property(nonatomic, copy) NSString *name;
@property(nonatomic, assign) int age;
@end
@implementation Person
@end

你可能想从阅读Apple的Objective-C编程语言介绍开始。

在ObjectiveC中,引用"this"的方式是"self"

你在 ObjectiveC 中有这个,因为你使用的是 C 样式变量。如果将该变量声明为 ObjectiveC 属性并使用正确的合成指令:

@property (int) age;
@synthesize age;

然后你可以通过self.age来参考它们

self.age = age;

在实现文件中。这将在内部调用-(void)setAge:(int)age方法和将自动定义的-(int) age方法。

最后,由于 ObjectiveC 对象只不过是指向 C 结构的指针,因此您可以通过跳过 ObjectiveC 来访问变量,方法是使用语法引用指向结构的指针的字段:self->age = age

最新更新