学到点语法那有点蒙 话不多说 上例子:
int a = p.age // [p setAge] 等价于 没问题 ,调用p.age 访问 - (void)setAge
:(int)age; 没问题 。问题是调用的 age是不是成员变量里_age;
把代码补全这样:
- (void)setAge:(int)age
{
_age = age;
}
从这里是不是可以看出 p.age 调用的age 不是成员变量而是不带减号的age.
请高手指点一下 ,我说的对不对啊。这相关到后面的一道大题。
举例:
@implementation Person
- (void)setAge:(int)age
{ //这就是最蒙的地方,从头来说,主函数里p调用set
//方法,把age 赋值为5 为什么打印的结果 age =0
// _age = 0;
}
int main()
{
Person *p = [Person new];
p.age = 5;
NSLog(@"%d",p.age);
} oc能自动补齐没有的 get方法 在get方法 返回_age.那为什么 _age 返回的结果还是
0,我的理解是set 方法的大括号中 因为是手动写的 没有在大括号里补齐参数,oc看有set
方法,它就不会管你里面有没有东西了,因此少了参数,把age=5 传到set方法中就没有转换了,也叫赋值那步骤了,所以set方法什么也没干 get方法没有值 给_age 所以返回值为0;
_ (void)setAge:(int)age
{
_age = age; 如果把参数补齐,在把age=5,传进来,结果是不是get方法的返回值就是5了。 求高手 高手指点 我的理解 是否正确。
}
|
|