黑马程序员——OC语言 核心语法(1)

                  Java培训、Android培训、iOS培训、.Net培训、期待与您交流!                                                     

                                                          (以下内容是对黑马苹果入学视频的个人知识点总结)

(一)点语法

 点语法其实本质上还是方法调用

 当使用点语法时,编译器会自动展开成相应的方法

1)利用点语法代替set方法和get方法

①方法调用

1 Student *stu = [Student new];
2 [stu setAge:100];
3 int age = [stu age];

②点语法

1 stu.age = 100;
2 int age = stu.age;

注意点:  死循环

- (void) setAge:(int)age {

    // 下面的代码会引发死循环

    self.age = age;

}

- (int) age {

    // 下面的代码会引发死循环

    return self.age;

}

(二)成员变量

1)基本概念

 局部变量、全局变量都有自己的作用域,成员变量也不例外

2)类型 

①@private:只能在当前类的对象方法中直接访问

②@protected:可以在当前类以及子类的对象方法中直接访问

③@public:任何地方都可以直接访问

④@package:同一个“体系内”(框架)可以访问,介于@private和@public之间

(三)@property和@synthesize

1) @property

1>用在@inteface中

2>用来自动生成setter和getter的声明

3>用@property int age;就可以代替下面的两行

1 - (int)age;   // getter
2 
3 - (void)setAge:(int)age;  // setter

①自从Xcode 4.x后,@property就独揽了@synthesize的功能。也就是说,@property可以同时生成setter和getter的声明和实现

②默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量

2) @synthesize

1>用在@implementation中

2>用来自动生成setter和getter的实现

3>用@synthesize age = _age;就可以代替

1 - (int)age{
2 
3        return _age;
4 }
5 
6 - (void)setAge:(int)age{
7        _age = age;
8 }

① setter和getter实现中会访问成员变量_age

② 如果成员变量_age不存在,就会自动生成一个@private的成员变量_age

@synthesize age;

③ setter和getter实现中会访问成员变量age

④ 如果成员变量age不存在,就会自动生成一个@private的成员变量age

手动实现

①若手动实现了setter方法,编译器就只会自动生成getter方法

②若手动实现了getter方法,编译器就只会自动生成setter方法

③ 若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

 

转载于:https://www.cnblogs.com/lijifeng/p/4359860.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值