OC中类与对象的使用介绍
来源:互联网 发布:graphic软件 编辑:程序博客网 时间:2024/05/16 10:56
1 类如何生成:拥有相同(类似)属性和行为的对象都可以抽象出一个类。类只是一张对象的设计图。
2 设计类的有几部分
(1) 类名(书写规范)
类名的第一个字母必须是大写
不能有下划线
多个英文单词,用驼峰表示
(2)属性
(3)行为:哪个对象对行为最清楚,就把行为写到哪个对象中去。
3 OC中类的书写格式
(1)在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称];
(2)利用类来创建对象。
(3):NSObject 目的是:让继承它的类具备创建对象的能力。
(4)#import<Foundation/Foundation.h> 目的是:NSObject在Foundation框架中的Foundation.h文件中进行了声明。
(5)类中的成员变量默认的会被初始化为0;
4 OC中类与对象深入剖析
(1)OC中只能用指针来间接操纵对象
(2)[类名 new]会创建出一个新对象,并且会返回新对象本身(新对象的地址)每次new创建 都返回新地址。
(3)错误提示中常见“instance variable”意思是实例变量,即类定义的成员变量。
(4)因为类中的成员变量(实例变量)是默认为protected的,所以想在外部用对象指针访问成员变量的方法之一就是在实例变量声明的前面加@public
(5)方法(行为)三要素:方法名、参数、返回值(声明、实现)。注意:方法与函数是不同的,函数指在外部建立的操作块。方法仅仅指OC类的成员行为。
(6)OC方法中任何数据类型都必须用小括号()扩住,OC方法中的小括号就有一个作用:扩住数据类型。
(7)对象与类的内存分析:每次用[类 new]创建对象时还要给类分配存储空间。也就是说在使用类创建对象之前,会将类加载进内存,且只加载一次。类中放置的是方法列表。每个对象内部默认都有一个isa指针。且每个isa指针都指向加载进内存的自己所属的类。给对象发送消息的流程如下:假设有一个Person类,生成p1对象即Person *p1=[Person new]; 已知类只会加载一次里面存储的是类的方法列表。里面有可以访问类的实例变量的方法。当类被加载进内存之后,在利用这个类创建对象时会把加载进来的这个类所在内存的地址即isa放置到它所创建的对象内,(它所创建的所有对象都有相同的isa指针且都指向它)。当给一个对象发送消息时,这个对象便会利用isa指针找到类的相应方法。
(8)OC中的对象是不会自动回收的,除非手动释放它。当出{}之后,指向这个对象的指针是个栈变量会被自动回收,但它所指向的对象仍在内存之中。未被释放的对象直至main函数执行完毕才能自动被回收。就是说,在程序执行结束时所有未被释放的对象都会被系统自动回收。
5、常见错误:
(1)@interface类声明部分和@implementation类实现部分是不能嵌套的。
(2)@interface类声明部分是不能有类方法的实现的。这与C++不同。
(3)@interface类声明部分的{}内声明实例变量时,是不允许赋初值的,且不允许在内部声明实例(即成员)变量时加上c语言的类型如static等类型的。
(4)在一个main.m文件中,类的实现可以放在main函数后面,但是类的声明是必须放在main函数前面的。
- OC中类与对象的使用介绍
- OC中类和对象的创建和使用
- OC中对象方法的使用详解
- JavaScript中类与对象的介绍
- OC中数据类型使用介绍
- OC中Foundation集合的使用(其中包括基本数据类型与对象进行转换)
- OC--类与对象
- OC---类与对象
- OC-类与对象
- OC中类的创建简单介绍
- OC中类的扩展介绍
- OC中面向对象语法类与对象
- 黑马程序员---OC基础---OC简介、OC与C的差异、类和对象与方法
- OC语言 OC初识-类与对象
- OC中对象的初始化
- OC类和对象-对象的产生和使用
- 黑马程序员——OC学习笔记 类与对象的使用
- 16-OC中NSNumber的使用(把基本数据类型包装成OC对象)
- POJ 1163 The Triangle(三种搜索方式)
- hdu 2602 Bone Collector(01背包)
- libpcap动态链接库在linux下使用以及接口函数
- UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
- 黑马程序员-----Java基础-----异常
- OC中类与对象的使用介绍
- HDU 2222 Keywords Search (AC自动机模板)
- js导入导出excel(实例代码)
- linux下底层函数实现MAC、IP地址以及网关地址
- Java灵活文档导出-Freemarker
- 深入javascript面向对象,js的原型链、继承
- Leetcode#41||First Missing Positive
- linux网络编程
- 最短路算法之Folyd算法