OC基础-Xcode+点语法+变量作用域+@property/@synthesize

<1>多文件开发
1. 定义一个类分2个文件:.h声明文件和 .m实现文件。.h是成员变量/方法的声明,.m是方法的实现。如果想要使用某一个类,只需#import类的.h文件即可


<2>Xcode的一些高级功能
1. 提示功能
2. #pragma mark - ********  //标记功能
3. 建立自己的常用代码
4. 断点执行代码功能
5. Xcode是边写代码边编译
6. 如果编译没有错误,就有可能是链接错误
7. 可以同时查看不同文件里面的内容,在View里面,也可以点按钮,还可以双击要查看的文件


<3>点语法
1. ‘.’语法是用来替代set/get方法的,赋值就是set方法,取值就是get方法(这个编译器可以识别),点语法的本质还是方法调用

2. /*
Person *p = [Person new];
p.age = 10;     //相当于 [p setAge:10];
int a = p.age;     // 相当于 [p age];
*/

3. 在set方法中使用set的点语法会导致死循环,同样在get方法中使用get的点语法也会导致死循环


<4>成员变量的作用域
1. @public : 在任何地方都能直接访问对象的成员变量(这里的任何地方可以理解为任何一个文件里)

2. @private : 只能在当前类的对象方法中直接访问成员变量(只能在当前类的内部访问该成员变量,但这并不意味着子类不能访问该变量了,有一种方法,我们可以通过父类的setter和getter来间接的访问(跟外界别人调用该方法一样),因为子类也继承了父类的方法了吗,可以在子类的实现中(另外实现一个方法)调用他继承自父类的父类方法:例如:[self setAge:**]/[self age])或者用子类的对象直接调用子类继承的父类的setter和getter

3. @protected : 可以在当前类及其子类的对象方法中直接访问成员变量(没有说明默认的就是@protected,这个指的是在类的声明中的成员变量,如果在类的实现里面的话,看下面的一条笔记)

4. @package : 只要处在同一个框架中,就能直接访问对象的成员变量 [介于@private和@public之间]

5. 注意‘直接’两个字,直接代表的是直接访问变量名。不能‘直接’访问不代表不能访问,有的可以通过setter/getter来访问

6. 在类的实现中也可以定义成员变量,但是是private的,不能被使用访问,但是加上@public就可以被当前的文件使用,注意是仅限当前的文件,而且是这个变量后面的才可以使用,原因是这个成员变量只存在于这个.m文件中,而声明中没有,所以其他包含有该类的声明的文件中是没有这个成员变量的,所以其他的文件不能使用这个成员变量,即使加上public也不行[换句话说就是包含该类声明的文件中没有这个成员变量,编译器加载的时候只加载.m文件,到底是可用还是不可用,取决于用之前编译器能不能知道这个成员变量]。而且的在实现中定义的成员变量,子类也会继承下去

7. 而且在实现中定义的成员变量不能跟声明中的重名

8. OC是单继承,一个子类只能有一个父类


<5>关键字@property和@synthesize
1. @property : 可以自动生成某个成员变量的setter和getter声明 ————— @property 变量类型 方法名(谁的方法名);    // @property int age;

2. @synthesize : 可以自动生成某个成员变量的setter和getter实现 ————— @synthesize 方法名 = 成员变量(哪个变量);   // @synthesize age = _age;

3. 同一类型的成员变量也可以合到一句声明/实现

4. 如果我们没有定义某个成员变量,但是在声明中的@property和实现中的@synthesize中用到了,也是正确的,编译器会自动帮我们加上一个这个成员变量(就是@synthesize中等号右边的那个成员变量。但如果没有等号以及等号右边的那个成员变量,那编译器默认的就是生成一个和方法名一样的成员变量而去访问)

5. 甚至实现中的@synthesize也不写也是可以的(也就是说@property可以自动生成-定义带下划线的成员变量,又可以生成声明以及实现,但是这样的成员变量是private的)

5.1-如果自己手动的同时写好setter和getter,那么Xcode就不会自动生成任何东西,包括成员变量以及setter和getter

6. 成员变量以下划线开头是苹果官方推荐的

7. 对于成员变量和get/set方法:苹果编译器会首先看你的代码,如果你有自己的代码,就优先使用你的,没有就自动帮你生成(而且自动生成的成员变量是以下划线开头的)

8. 如果这些细节性质的东西记不清了,就自己试一试,断点。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值