iOS学习

转载学习记录

 

目录

对象与消息

类的定义

继承相关

@property的关键字记忆

生命周期

零碎记忆点


对象与消息

OC中,id类型的变量可以存放任何数据类型的对象。只声明一个id类型的变量时,该变量并不指向任何对象。首先需要调用构造函数来生成对象。id为指针类型,其所指向即为实例对象分配的内存。

[ 类名 alloc ]  实例的生成。alloc执行后完成对象所需存储空间的分配,之后进行初始化操作

[ [ 类名 alloc] init ] 某个类的对象的生成

创建对象:MyClass *ObjectName = [[MyClass alloc]init];

方法: -(returnType)methodName:(typeName)variable1:(typeName)variable2;

 

类的定义

类的接口部分定义了类的实例变量和方法,提供给要调用这个类的模块引用。

.h文件:

.h里面的@interface,不消说,是典型的头文件,它是供其它Class调用的。它的@property和functions,都能够被其它Class“看到”。

@interface 类名:父类名{

//类变量声明

}

//类属性声明

//类方法和声明

@end

类的实现: 执行 。.m文件:

而.m里面的@interface,在OC里叫作Class Extension,是.h文件中@interface的补充。但是.m文件里的@interface,对外是不开放的,只在.m文件里可见。我们将对外开放的方法、变量放到.h文件中,而将不想要对外开放的变量放到.m文件

@implementation 类名

//类方法定义

@end

继承相关

init初始化方法:

-(id)init{
 self = [super init]; //调用父类的init方法
 if(self != nil){     //父类返回初始化好的实例
 ...   //子类专有的初始化操作,比如一些新增的实例变量初始化等,或者与父类不同的
 }
 return self;
}

子类想重写父类的指定初始化方法,必须要调用父类的指定初始化方法,而不能调用父类的非指定初始化方法。否则将造成递归,无法终止。

动态绑定

动态绑定指的是程序执行时才确定对象的属性和需要响应的消息。

OC中的消息是在运行时才去绑定的。运行时系统首先会确定接受者的类型,然后根据消息名在类的方法列表中选择相应的方法执行,如果没有找到则会搜寻父类,一直找到NSObject,如果仍未找到,则会报告不能识别的错误。

OC中,nil表示一个空的对象,这个对象的指针指向空。

消息选择器中并不包含参数和返回值的类型的信息,消息选择器和这些类型信息结合起来构成签名,签名被用来在运行时标记一个方法。接口文件中国方法的定义也叫做签名。

类的前置声明

若在定义类型的时候需要使用其他类名,可以通过引入头文件,但是会造成编译负担,可与选用@class,前置声明。class指令的后面一次可接多个类,使用“,”分隔,最后用“;”标记前置声明结束。但是如果新定义的类中要使用原有类的具体成员或方法,就必须通过引入原有类的头文件。

@class Volumn; //声明要使用类Volumn

OC中Class类型用来表示类对象,所有的类对象都是Class类型,Class和id一样都是指针类型,只是一个地址,并不需要了解实际指向的内容。

@property的关键字记忆

nonatomic 禁止多线程,变量保护提高性能

atomic线程安全,有开销影响性能。

assign:非指针变量,一般用于基础类型和C数据类型,这些类型不是对象,统一由系统栈进行内存管理

weak:对象弱引用,不增加对象的引用计数,也不持有对象,对象消失后指针自动只想nil,防止野指针的存在

strong:对象强引用,增加对象的引用计数,如果指向了空对象,会造成野指针

copy:建立引用计数为1的新对象,赋值时对传入值进行一份拷贝。是讲对象复制给该属性,属性并不持有原对象,而是创建一个新的进行对象,拷贝原值

读写权限:默认readwrite,当需要暴露不能被外界修改的属性时,使用readonly

记不住啊记不住,好烦啊

 

生命周期

1、init里不要出现创建view的代码

2、loadView中只初始化view,一般用于创建比较关键的view

3、viewDidLoad 这时候view创建一些附加的view和控件,对于各种初始化数据的载入,初始设定、修改约束、移除视图等

4、viewWillAppear在这里可以进行一些显示前的处理,如设置设备不同方向时该如何显示;设置状态栏方向、设置视图显示样式等

5、viewDidAppear 一般用于显示后,在切换动画后的操作

6、viewWillLayoutSubviews,对subview布局

7、viewDidLayoutSubviews对布局调整以后要做的

8、viewWillDisappear 在视图切换时,当前视图在即将被移除、或被覆盖时,会调用该方法,此时还没有调用removeFromSuperview

9、viewDidDisappear   view已经消失或被覆盖,此时已经调用removeFromSuperView2、loadView中只初始化view,一般用于创建比较关键的view

10、dealloc视图被销毁,此次需要对你在init和viewDidLoad中创建的对象进行释放。

基于引用计数的内存管理

程序未能释放不再使用的内存-内存泄漏。在指针所指向的对象已被释放或回收的情况下,该指针称为悬垂指针野指针。

引用计数,程序中有多少个地方需要访问这个对象。

释放对象的方法

用alloc和初始化方法创建一个对象时,该对象的引用计数的初始值为1。真正释放对象占用内存的是dealloc方法。在释放一个类的实例变量时,彻底放弃该实例对象所保持的所有对象的所有权,需要为该类重写dealloc方法,在其中释放已经分配的资源,放弃实例变量的所有权。

-(void)dealloc{
  /*
  这里通过release方法放弃子类中所有实例变量的所有权
  以及其他用于释放的善后工作
  */
  [super dealloc];
}

OC中的对象方法

1. “ - ”开头

2.只能被对象调用

3.对象方法能够访问实例变量

OC中的类方法

1.“+”开头

2.只能通过类名调用,对象不能调用

3.类方法中不能访问实例变量

4.适用场合:不需要访问成员变量的时候,尽量用类方法

 

 

通讯录

通讯录

查询授权状态 :

ABAddressBookGetAuthorizationStatus函数可以查询对通讯录的访问权限
kABAuthorizationStatusNotDetermined用户还没有决定是否授权你的程序进行访问
kABAuthorizationStatusRestrictediOS设备上的家长控制或其它一些许可配置阻止程序与通讯录数据库进行交互
kABAuthorizationStatusDenied用户明确的拒绝了你的程序对通讯录的访问
kABAuthorizationStatusAuthorized用户已经授权给你的程序对通讯录进行访问

 

 

零碎记忆点

hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始

UIView中alpha是一个浮点值,取值范围0~1.0,表示从完全透明到完全不透明。

NSUserDefaults standardUserDefaults中在最后使用synchronize的作用:系统会保存到该应用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults数据不会被系统写入到该文件,所以,要使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,来避免数据的丢失。
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值