首页 > 编程语言 > 详细

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

时间:2015-03-23 15:58:25      阅读:279      评论:0      收藏:0      [点我收藏+]

                  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方法,编译器就不会自动生成不存在的成员变量

 

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

原文:http://www.cnblogs.com/lijifeng/p/4359860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!