博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC语言基础知识
阅读量:5918 次
发布时间:2019-06-19

本文共 1514 字,大约阅读时间需要 5 分钟。

一、面向对象

OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类。

术语:OO面向对象、OOP面向对象编程

二、类

(一)关于类

类的设计只关注三个东西:类名、属性和方法

注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识。在对方法进行类的划分中,一般采取的做法是谁最熟悉这个方法那么就把这个方法划分给谁。在OC中,对象对方法的调用称为消息机制,即向既定的对象发送了什么消息。

(二)简单内存分析

类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此。

每个对象内部都默认有一个isa指针指向这个对象所使用的类。

[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。

isa是对象中的隐藏指针,指向创建这个对象的类。

(三)类的声明和实现

1)类的声明:

这里声明了一个Person类,这个类拥有一个@public修饰的属性(成员变量),以及一个对象方法put。

2)类的实现:类的声明可以理解为类中的方法的实现

3)类的调用:在主函数首先创建了一个Person类型的对象(先调用alloc分配存储空间,后调用init方法初始化为0),并定义了一个Person类型的指针指向创建的这个对象,之后初始化对象成员变量_age的值为20,然后调用了对象的put方法,打印输出。

4)练习,创建一个Person类。

类的声明:

类的实现如下:

类的调用如下:

(四)常见错误

(1)@interface @end和@implementation @end不能嵌套包含

(2)只有类的声明没有类的实现

(3)漏写@end

(4)两个类的声明嵌套(可以把顺序打乱)

(5)成员变量没有写在{}里

(6)方法的声明写在了{}里面

(7)在声明时对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在

(8)方法无法像函数那样的调用

(9)成员变量和方法不能用static等关键字修饰,不要和c语言混淆

(10)类的实现可以写在mian函数后面,在使用之前只要有声明就可以

三、OC对象与函数

OC对象与函数有着本质的区别:

(1)方法的实现只能写在@implementation··@end中,对象方法的声明只能写在@interface···@end中间

(2)对象方法都以-号开头,类方法都以+号开头

(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用

(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation··@end中,但写在@interface···@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。

(5)对象方法归类\对象所有

(6)函数调用不依赖与对象

(7)函数内部不能直接通过成员变量名访问对象的成员变量

四、类和方法的设计

工具类:基本没有任何的成员变量,里面的方法基本都是类方法。

注意:在对象方法中可以调用类方法。

需求:设计一个工具类:一个计算器类,要求(1)返回π,(2)计算两个整数的和,(3)计算某个整数的平方。

类的声明部分

类的实现部分

测试程序:

转载地址:http://zudvx.baihongyu.com/

你可能感兴趣的文章
swift 生命周期_swift – 保证局部变量中引用的生命周期
查看>>
unittest安装教程_unittest模块使用方法
查看>>
char *需要释放_QT案例词典 释放堆区空间及查询单词
查看>>
python预测你的小孩身高_告别墙上刻线,便捷测取身高——云康宝智能身高测量仪测评...
查看>>
web前端知识点太多_Web前端知识点有哪些 怎么学习小程序基础库
查看>>
wpa群组密钥转动间隔多少好_来电咨询:全国附近锁具销售多少钱一次
查看>>
hive中groupby优化_HiveSQL常用优化方法全面总结
查看>>
gis中开始编辑之后显示空间参考_什么是三维GIS ?
查看>>
qt软件占内存太大_游戏太大占手机内存?狂热玩家ROG:1TB小意思
查看>>
openwrt配置内核驱动_如何将驱动封装到Linux ISO?
查看>>
tomcat线程释放时间_玩转Tomcat监控管理
查看>>
安装vs2017出现闪退现象_设计师总结:卫生间蹲便器安装施工方法,避免出现反臭现象...
查看>>
天线为什么会有多次谐振_【对讲机的那点事】常用的业余无线电天线你了解多少?...
查看>>
flyme禁止系统更新_六大国产手机系统,MIUI成香饽饽,氢OS被狂吐槽
查看>>
用python画生日祝福短信_Python|送给朋友的生日祝福
查看>>
学术诚信的重要性_出国留学论学术诚信的重要性
查看>>
加载默认地形_Cesium开发基础篇 | 02加载地形数据
查看>>
配置snmp_[技术干货] zabbix使用ipv6地址监控snmp客户端
查看>>
拼接名字_周雨彤晒早春新装,穿拼接外套搭丝绒头饰,玩转GUCCI高奢时尚
查看>>
#发送会议邀请邮件_撤回Outlook邮件,保住颜面的极限操作
查看>>