黑马程序员技术交流社区
标题: OC中,对象方法和类方法练习报错 [打印本页]
作者: 执着的土豆 时间: 2014-4-27 14:41
标题: OC中,对象方法和类方法练习报错
本帖最后由 执着的土豆 于 2014-4-27 15:43 编辑
大家帮忙看看,为什么这样调用会报错呢?直接上代码和运行结果吧。
- #import <Foundation/Foundation.h>
- @interface Penson :NSObject
- {
- int _age;
- }
- - (void)setAge:(int)age;
- - (int)age;
- + (void)setAge:(int)age;
- + (int)age;
- @end
-
- @implementation Penson
- - (void)setAge:(int)age
- {
- _age=age;
- }
- -(int)age
- {
- return _age;
- }
- + (void)setAge:(int)age
- {
- _age=age;
- NSLog(@"%d",_age);
- }
- + (int)age
- {
- [self setAge:20];
- return _age;
- }
- @end
- int main()
- {
- Penson *p= [Penson new];
- [p setAge:10 ];
- NSLog(@"%d",[p age]);
- NSLog(@"%d",[Penson age] );
- return 0;
-
- }
复制代码
运行结果:
3三大特性的练习.m:23:4: error: instance variable '_age' accessed in class
method
_age=age;
^
3三大特性的练习.m:24:17: error: instance variable '_age' accessed in
class method
NSLog(@"%d",_age);
^
3三大特性的练习.m:30:12: error: instance variable '_age' accessed in
class method
return _age;
^
3 errors generated.
作者: gaoxinglei123 时间: 2014-4-27 15:04
成员变量是对象的变量。当你用类实例化一个对象时这个对象所拥有的变量。类似于对象方法。只能在对象方法中访问。不能用类方法访问
作者: yaozeyang_2014 时间: 2014-4-27 15:07
本帖最后由 yaozeyang_2014 于 2014-4-27 15:08 编辑
类方法是不能访问成员变量的,用实例方法吧,把+号变-号就可以,setter和getter都用-,然后你需要注意一下习惯,-后面最好敲一个空格
作者: 执着的土豆 时间: 2014-4-27 15:39
哦。 明白了。 我得代码里,好像时直接给类得定义里面赋值了,没有具体到哪个对象。 晕,昨天还给别人回答类似得问题,今天自己绕晕了。 谢谢了!
作者: 执着的土豆 时间: 2014-4-27 15:41
恩恩,明白了,上次你就给我解了个难题,讲得很透彻,非常感谢。 我加把劲,有机会得话咱们班里见!:)
作者: 执着的土豆 时间: 2014-4-27 15:42
恩恩,谢谢! 我中间加空格了,可能在这上面显示得不太明显,有一个方法前面没有加空格,其他都加了,急于解决问题,没注意。 谢谢。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |