OC学习1-基础语法

189 阅读3分钟

一、创建新文件

1、首先点击new新建file

截屏2021-12-27 上午10.07.13.png

2、点击Cocoa Touch Class 截屏2021-12-27 上午10.07.58.png

3、输入类名,类名首字母大写,JMHProject 截屏2021-12-27 上午10.08.41.png 4、创建成功 截屏2021-12-27 上午10.09.11.png

二、学习OC语法

(一)、.h文件和.m文件

.h文件:头文件。头文件包含类,类型,函数和常数的声明。(像是接口文件)

将对外开放的方法,变量放到.h文件中

.m文件:源代码文件。是典型的源代码文件扩展名,可以包含object-C和C代码。

将不想对外开放的变量放到.m文件中

.h  和.m文件中的都各自有一个@interface,有什么作用?

.h中的@interface,是典型的头文件,他是供其他Class调用的。他的@property和functins都能被其他Class所看到

.m文件中的@interface叫做Class Extension,是.h文件中@interface的补充。但是.m中的@interface是不对外开放的。只在.m文件中可见。

(二)、类的定义,类方法

类的定义:

@interface Person:NSObject{

}

类方法:

直接而无需创建的对象,可以访问类方法。他们没有任何变量和关联的对象。

+(void)simpleClassMethod;

(三)、OC属性

@Property:

作用:能够自动生成属性及属性的声明及实现

用法:在声明中定义:@property NSSting* name;(注意,不能放在大括号里)

1.会自动在声明中 声明一个属性(如果属性不存在)

2.会自动在声明中生成 set 和 get 的声明

3.会在实现中自动生成 set 与 get 实现

属性关键字:

同一类型的属性关键字只能写一个,参数类别分为

  1. 原子性 (联想事务原子性:一件事若由于客观原因没做完整,则回退到最初的状态)nonatomic 为线程不安全的。atomic 为线程安全(默认) 在iOS开发中为了性能都设置为nonatomic,线程安全问题通过其他方式解决
  2. 读写属性,是否要生成set方法

readwrite 可读可写(默认)

readonly 只读,编译器将只生成getter方法,不生成setter方法

  1. 内存管理相关

assign 默认关键字 非OC对象类型,基本数据类型的赋值,适用简单数据类型

MRC手动管理内存

a.retain 对象的属性声明,为当前对象指向的对象 引用计数+1保证不被释放

b.copy 对象的属性声明,操作的是复制的另一块内存,release旧值,copy新值

ARC自动管理内存 应用在对象类型的属性里

a.strong 强指针 增加一个对象的引用权限(引用计数+1)

b.weak 不会增加一个对象的引用权限,只能指向对象,不持有指向对象的所有权

(四)、对象方法,类方法

1.对象方法: 对象方法只能通过对象来调用。 规则:-(返回值类型)方法名;-符号 代表实例方法

对象方法解决与实例有关的相关操作 对象方法经常用来处理内存中的数据

2.类方法 类方法只能通过类来调用。 规则: +(返回值类型)方法名;+符号代表类方法。

类方法解决与类信息相关的相关操作。(类代码信息) 类方法经常用来处理与代码相关的操作。

作用:分配内存空间时,经常使用类型方法。

(五)、数据类型

数据类型:基本数据类型,指针数据类型

基本数据类型:数值型,字符型(char)、布尔型、空类型

指针数据类型:类,id

id类型:一种通用对象类型。可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象。

id number;

格式化说明符:%p;