A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卡哇伊 中级黑马   /  2014-8-12 01:15  /  1734 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      学到点语法那有点蒙 话不多说 上例子:
    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了。   求高手 高手指点 我的理解 是否正确。
}

8 个回复

倒序浏览
函数声明是怎么写的?
回复 使用道具 举报
因为是通过方法的调用来修改和访问成员变量的,如果按LZ的想法就变成了直接修改访问成员变量了,点语法中的age只是代表了函数的变量,然后再通过函数来访问修改成员变量,是封装的概念。LZ不要把二者放在一起想就能想通了。心中要有成员变量是protect的,如果再实在想不通就强记好了。
回复 使用道具 举报
本帖最后由 Jr_711 于 2014-8-12 09:42 编辑

1.不好意思哥们儿,我建议你排排版,把代码写到代码框里,现在这样让人看着乱还看不懂


2.根据我的理解回答你想问的是问题:
     1>p.age根据位置不同有两种含义:
  1. int a = p.age; // [p age];这样表示get方法      第二行那里不知是不是你写错
  2. p.age = 10;//    [p setAge:10];  这是set方法
复制代码

     2>你举例的题目是不是这样,建议把代码全贴出来
  1. - (void)setAge:(int)age
  2. {
  3. /* _age = age; 这里既然已经注释掉了,那就表示调用set函数时没有进行操作 ,_age还是原来的值,没有写get方法,正常情况下get返回的也是_age的值,我跟你理解都一样*/
  4. }
复制代码







回复 使用道具 举报
你的代码好难看, 建议你改一下弄好发上来吧, 感觉你好像对点语法还不是很了解.
回复 使用道具 举报
实在是太乱了,而且,我看,第二句就错了吧。p.age在等号的右边,明显是要给a变量赋值,怎么可能等价于【p setAge】 呢?
如果你觉得比较乱,你看看斯坦福大学IOS7公开课的第一节课,里面有一个学生提问了这个问题,老师也解答了。
还有,下次提问把格式整理清楚,方便别人就是方便你自己。
回复 使用道具 举报
是写错 了  有赋值的是Set方法 昨天 弄得太晚 了,迷糊了 ,打字速度很快 就没有回去检查 抱歉了
回复 使用道具 举报
cjfire 中级黑马 2014-8-12 10:58:23
8#
卡哇伊 发表于 2014-8-12 10:46
是写错 了  有赋值的是Set方法 昨天 弄得太晚 了,迷糊了 ,打字速度很快 就没有回去检查 抱歉了  ...

那就重新编辑一下吧。
回复 使用道具 举报
………………
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马