0

第一天学习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
4

4 回答 4

1

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

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

@implementation Person
@end

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

于 2012-11-14T02:10:44.590 回答
1

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

在您想手动定义访问器的情况下,setter 声明如下:

- (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;
}
于 2012-11-14T02:15:16.837 回答
0

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

于 2012-11-14T02:10:12.253 回答
0

你在 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

于 2012-11-14T02:10:36.980 回答