黑马程序员-OC语言基础学习(三)

---------------------- IOS培训.期待与您交流! ----------------------

OC学习笔记三

---既然决定14年要好好的努力一次,那么就不要再轻言放弃,不再在随波逐流。只有努力过、拼搏过,才会知道自己行还是不行!为自己加油!---

---总结的知识点可能有不正确的地方,如果有发现请留言给我,我一定及时更正,不让错误的知识去误导大家,有好的意见也可大声提出来,小弟一定愿意采纳---


1.核心语法

OC点语法(与get set方法有关)
//注意点语法是访问方法,不是成员变量,与JAVA区分开
p.age = 10;  //实质  [p setAge:10];  编译器会自动转换   因为带了参数所以是访问set方法
点语法不是访问get 就是set 方法

OC中访问成员变量 p->age;
2.成员变量的作用域
@private  只能在当前类的实现@implementation中直接使用
@protected  可以在当前类以及子类的实现@implementation中直接使用
@public 任何地方都可以直接访问
@package 同一个“体系内”(框架)可以访问,介于@private 和@public之间

子类想访问父类中@private修饰的成员变量只能通过get set 方法。
子类虽然不能直接访问@private修饰的成员变量,但是在子类内部是存在被@private修饰的变量的

如果你仅仅想把成员变量开放给子类,不允许其他类访问可以用protected修饰 ,只能在当前类和子类的对象中直接访问 其他类不行

在实现中也可以声明成员变量,但是不能与@interface 中的同名 如
@implementation
{
int _age;    //在实现中声明的成员变量,在有些书籍会有这样的形式  默认就是私有的   
}
@end

OC中成员变量在@interface中默认为protected  在@implementation中默认为private

没有@interface  只有@implementation也能开发一个类 
OC中类的声明和成员声明一般都写在.h文件中,在编程是需要注意只有在前面引入.h文件了,才能利用对象去访问其中的方法和变量

3、@property  与 @synthesize  概要
帮助自动生成get set 方法
@property 自动生成某个成员变量的set 和get 声明
如  @property int age; 等价与下面两句
- (void) setAge:(int)age;
- (void) age;
注意 在利用@property 时需要注意后面变量的名字,不需要加下划线。只有成员变量才加下划线

@synthesize 帮助自动实现get set方法
如  @synthesize age = _age;   执行放回给成员变量_age 

练习
        @interface
        {
                int _age;
                int age;
        }

        @property int age;
        @end

        @implementation
                @synthesize age = _age;  指定给成员变量_age 实现get set 方法

                @synthesize age = age;   指定给成员变量age 实现get set 方法   但是一般成员变量都是以下划线开头 ,这个只是例子为了演示
        @end
4、@property  与 @synthesize最简写法
形式一
{
int _age;
int _name;
}
@property int age, name

@synthesize age = _age, name = _name;
形式二(这是在xcode4及之前的版本)
@interface
@property int age;
@end
@implementation
//会访问_age这个成员变量,如果不存在,就会自动生成@rivate类型的_ageb变量
@synthesize age = _age;
@end
形式三(这是在xcode4之后的版本)
@interface
@property int age;   
//一句话干了三件事情,声明变量、声明get set方法,实现get set方法,但是缺点是私有的private ,如果想不是私有的private那么就需要按照形式一的方法建立
@end
@implementation
@end

5、@property  与 @synthesize使用注意
@synthesize age;
//没有指定范围那个变量时,默认会访问age这个成员变量,如果没有age,就会自动创建@private类型的age变量
@synthesize age = _age; //指定访问_age变量

@property 
用在@interface中
用来自动生成set 和get声明

@property 新特性
自从xcode 4.4 之后 @property 就独揽了@synthesize的功能,可以声明也可以实现,默认情况下回去访问下划线的变量

@synthesize
用在@implementation中
用来自动生成set 和get的实现
6、手动实现
若手动实现了set方法,编译器就只会自动生成get方法
若手动实现了get方法,编译器就只会自动生成set方法
若手动实现了set、get方法,编译器就会自动生成不存在的成员变量

7、OC中id类型
(id 是关键字,所以在创建变量时不能起名id)
id == NSObject *
万能指针,能指向任何OC对象,相当于 NSObject
在OC中id的定义
typedef struct objc_object {
Class isa;
} *id;

使用方法:
id p = [Person new];  //注意  id后面不需要加上*



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值