博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
object-c基础学习 基于<iOS软件开发揭秘>
阅读量:4565 次
发布时间:2019-06-08

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

一 oc基本数据类型

1,id类型指向object-c对象的指针

 可以指向任意的对象类型,可以将任意消息传递给id,id不支持该消息时,会返回运行时异常,"unrecognized selector send to instance xxx"消息;

常用于表示类的委托属性,例:@property  id<协议名> delegate;

2,SEL类型,用来定义方法的关键字

oc对象可以接受任何消息,但不一定能响应,通过方法:respondsToSelector()来判断对象是否能响应某个消息,保护代码,

- (BOOL)respondsToSelector:(SEL)aSelector; ->NSObject类

3,nil,NULL,NSNULL --空值

nil用于对对象赋值,NULL给任何指针赋值,NSNULL用于集合操作

nil对象可以接受消息,返回0值,不引起异常

4.基本数据

整数类型 int  4字节 , short 2byte , long 32位机4byte 64位机8比特 , long long 8字节,

浮点型 单精度float 4字节 , 双精度double 8字节

    float a=6.7;

    NSLog(@"%f",a);  --->6.700000

    NSLog(@"%.6f",a); ----> 6.700000

    NSLog(@"%.10f",a); ----->6.6999998093

布尔类型 bool 1字节

BOOL 4字节

字符类型 char

枚举类型

二 宏定义

#define  定义函数,数字,字符串

静态变量static int i=0;//局部静态变量作用在方法体内,等同于全局变量

#pragma mark -用于分隔代码块

#pragma mark NETWORK API

 

三 内存管理

内存管理的原则:谁创建 谁释放

1.手动内存管理MRR manual retain release

2.自动引用计数ARC Automatic Reference  Counting

常见内存错误:1.内存泄露,对象没有在使用结束释放掉,造成常驻内存的现象;2.过度释放,对象还没有使用就被释放了,提前释放造成系统崩溃.

能让引用计数增加的操作:

1.alloc new retain copy 使对象的引用计数+1;//需要程序员自己手动release释放

2.采用类方法创建对象,会使引用计数+1,由系统方法内部创建,由系统自己释放

3.父控件加载子控件时,[self addsubView:xxx]让对象的引用计数+1

4.对属性进行赋值时,会让对象的引用计数+1;

5.向数组中添加对象,引用计数+1,删除数组中的对象引用计数-1;

能让引用计数减少的方法:

release  autorelease 使对象的引用计数-1;

当引用计数为0时,自动调用对象类的dealloc方法,对象占用的内存被收回

全局的对象在本类的dealloc方法中释放

静态方法创建的对象,声明为全局后,对象会被系统自动释放,需保留一次引用计数,否则在别的方法中再使用该对象时会崩溃

在方法体内创建的对象,可使用autorelease 加入自动释放池,在一定时期后释放

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/lpjdbk/p/4676815.html

你可能感兴趣的文章
python全栈脱产第19天------常用模块---shelve模块、xml模块、configparser模块、hashlib模块...
查看>>
[LeetCode] House Robber
查看>>
virtualbox中kali虚拟机安装增强功能
查看>>
java生成六位验证码
查看>>
iOS的MVP设计模式
查看>>
stringstream
查看>>
【转】HDU 6194 string string string (2017沈阳网赛-后缀数组)
查看>>
前后端分离
查看>>
存储过程
查看>>
生成器
查看>>
将一个数的每一位都取出来的方法!
查看>>
2) 十分钟学会android--建立第一个APP,执行Android程序
查看>>
面试题8:二叉树下的一个节点
查看>>
hash冲突的解决方法
查看>>
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>
doc文档生成带目录的pdf文件方法
查看>>
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>