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