f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks

@interface中的成员变量作用域
/*
局部变量有作用域、全局变量有作用域。所以成员变量当然也有作用域。

成员变量的作用域分为四种:
@public\@private\@protected\@package
*/
/*
@public : 任何地方都能直接访问对象的成员变量。
@private : 只能在当前类中访问
@protected : 只能在当前类和其子类中访问,这是默认方法
@package :
注意事项:
1.需要注意的是这四个修饰符只能修饰成员变量,不能修饰方法。这和C++不一样。

*/
 1 #import <Foundation/Foundation.h>
 2 
 3 
 4 @implementation Car : NSObject
 5 {
 6     int _age;
 7     @public
 8     int _fuck;
 9 }
10 
11 @end;
12 
13 int main() {
14 
15     Car * c = [Car new];
16     //c->_age = 10; // error: instance variable '_age' is private
17     c->_fuck = 20;
18     //NSLog(@"_age = %d", c->_age); // error: instance variable '_age' is private
19     NSLog(@"_fuck = %d", c->_fuck);
20     return 0;
21 }
22 
23 /*
24 总结:
25 在implementation的注意事项
26 1.默认为private属性,所以不能用->直接访问。
27 2.可以用成员变量修饰符。
28 
29 
30 分析:但是如果@implementation不是直接写在main函数前面,那么
31 其实我们是无法知道其提供给外部的这个对象有这种成员变量。不管其是否是@public
32 都无法访问,所以
33 3.写在@implementation的成员变量,如果这个@implementation不在main函数前面,那么相当于是没有的。
34 只有在@implementation前面,才用必要考虑1、2两条。
35 */


posted on 2015-05-01 15:11 swp 阅读(96) 评论(0)  编辑 收藏 引用 所属分类: objective-c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理