首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Objective-C学习札记(一)–类

2013-10-16 
Objective-C学习笔记(一)–类1、类的定义与实现1.1说明所有的类都是继承NSObject。类的接口与实现是分开的,一

Objective-C学习笔记(一)–类
1、类的定义与实现1.1说明

所有的类都是继承NSObject。类的接口与实现是分开的,一般类的定义是放在.h文件【包含类的名称、成员变量、方法、属性、继承关系、遵从的协议】;实现部分是放在.m文件中【包含每个属性和方法的具体实现以及协议的方法实现】

语法:【类的定义以@interface开头以@end结束;类的实现以@implementation关键字开头以@end结束】

Person.h

 

 

 

 

2、成员变量与方法

 

2.1变量

变量分为成员变量和类的静态变量。

成员变量

可访问性:@protected、@private、@public

关键字

可见性

描述

@protected

当前类及子类的实例方法可见

默认值,类里声明的成员变量的可访问级别默认为@protected。

 

@private

只对当前类的实例方法可见

私有访问级别

@publice

成员变量对外可见

 

 

变量的声明

关键词

描述

nonatomic

线程安全的,编译器默认会生成额外的代码以保证访问属性的线程安全,会牺牲一定的性能。

readonly

属性只可读,@synthesize指令只会生成get方法还没有set方法

readwrite

默认值。可读写

geter=get方法名,

setter=set方法名

当声明一个属性用@synthesize指令会生成相应的get方法和set方法,但可以通过getter和setter来手动指定get方法和set方法

assign、retain、copy

 

 

 

 

调用:对过点.来实现调用

xiaoMing.name=@”90worker”;

 

点语法oc2.0以后

为什么设计点语法

1、为了方便别的程序员转到OC开发来

2、为了让程序设计简单化

3、隐藏了内存管理细节

4、隐藏了多线程、同步、加锁细节

 

 

2.5@class关键字

@class为前向声明

现有两个类的声明

Wheel代表着轮子,Bike代表着自行车,我们知道Bike是需要Wheel的

于是有以下的代码

Bike.h

关键字

描述

#import

将Wheel类的外部接口Wheel.h整个导入,这样会产生编译依赖和编译时间的浪费。如果Bike.h中导入了Wheel.h而Bike.h文件又被很多其他的类导入 了,那么这些类也会导入了Wheel.h,一旦Wheel.h修改了,所有导入了Wheel.h的文件都发生了变化需要重新编译。

@class

1、可以有效的解除上面所说的编译依赖。如果Wheel.h修改了,对于那些导入了Bike.h的文件并没有发生变化所以也不需要重新编译。使用了@class关键字只是在类的定义中前身引用了,但在Bike类的内部实现中还是需要导入Wheel.h的,因为可能需要使用到Wheel.h中的某些定义方法

2、可以解决循环引用

 

 

 

 

 

 

2.6self关键字

 

self表示当前引用对象

记住以下两句话:

1、谁在执行该函数 self就表示谁

2、super表示该对象的父对象

 

-(void)dealloc{       //在调用父类之前做一些处理       [superdealloc];}

 

 

2.8 initialize函数

 

+(void)initialize  NSObject 这个类的第一次实例化的时候调用第一次调用alloc 或者调用init的时候就会调用  【只调用一次】  类方法在该类第一次实例化的时候调用 并且只调用一次  在这里做一些static变量的初始化操作

 

热点排行