1.强指针:默认的情况下所有的指针都是强指针,关键字__strong

弱指针:__week关键字修饰的指针

2.ARC:编译器将自动在代码合适的地方插入retain、release、autorelease

ARC的判断准则,只要没有强指针指向对象,对象就会被释放

3.判断是否是ARC

查看项目信息;不能使用retain、release、autorelease、retainCount,在dealloc方法中不能使用[super dealloc]

正常创建对象,不用手动释放对象

4.ARC下循环引入的问题,解决办法一端使用强指针一端使用弱指针

5.@property参数

strong强指针

week弱指针

6.__week Person *p=[[Person alloc]init];//不合理,对象一创建出来就被释放掉,对象释放掉后,ARC把指针设置为nil

7.分类的使用,扩展原来类的方法

#import "Student.h"

@interface Student (study)
-(void)run;
@end
#import "Student+study.h"

@implementation Student (study)
-(void)run{
NSLog(@"study run");
}
@end

分类里的方法跟原来的方法一样使用,如果分类中和类中方法名一样,优先调用分类的方法

8.非正式协议

所谓的非正式协议就是类别,即凡是NSObject或者其子类的类别,都是非正式协议

9.扩展-特殊的分类

分类名为空,可以增加类的实例变量和方法,但是方法须在类本身的.m文件中实现

变量和方法相当于私有

10.block的定义

int (^myblock)(int,int)=^(int a,int b ){   };

调用方式:

myblock(1,2);

可以再给myblock赋值

22.typedef bolck

typedef int (^Myblock)(int,int)=^(int a,int b ){   };

Myblock myblock1,myblock2;

23.block内可以访问外部的变量

当定义block的时候,block会把外部变量的值以const的方式复制一份,放到block所在的内存中,不能修改

全局变量可以修改

外部变量加__block那么block内部不再以const的方式拷贝,可以在block内部修改,再后面的代码中,全部使用的是堆区空间

24.block的应用场景,把代码块作为参数传递

或者block作为返回值

25.助记符 inlineBlock

26.protocol类似java的借口,但协议中的方法不是全部必须实现

步骤:

定义协议

@protocol 协议名称<NSObject>

@end

采纳协议

@interface Person:NSObject <协议1,协议2>

@end

实现协议的方法

当遵守了某个协议后,就有了这个协议中所有方法的声明

协议还可以遵守其他的协议

OC不能继承多个类,但是能够遵守多个协议

27.protocol方法的修饰符

必须实现@required

选择实现@optional

28.id类型后面加<协议名>表示只能赋值遵守了协议的对象

类名后面加<协议名>表示只能赋值遵守了协议的当前类的对象

29.协议代理模式

传入的对象,代替当前类完成了某个功能,称为代理模式

30.@protocol

在.h文件中用@protocol 协议名 代替import导入协议

在.m文件中导入协议

在main文件中再使用时导入协议

Objective-C基础4的更多相关文章

  1. Objective—C基础学习总结

        1. (1)面向过程:一种以事件为中心的编程思想         (2)面向对象:一种以对象为中心的编程思想        2.get和set是用来访问和修改对象里的属性值           ...

  2. Objective C 基础

    1,字符串加@: 不加@的是C语言字符串. 加@的代表的是OC的NSString http://www.jikexueyuan.com/course/71_2.html 2,setValuesForK ...

  3. [置顶] IOS 基础入门教程

    IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...

  4. Getting Started with Core Data

    Getting Started with Core Data Getting Started with Core Data Coreframework支持创建对象模型封装你的应用数据和逻辑满足MVC设 ...

  5. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  6. Objective-c——UI基础开发第十二天(相册展示)

    一.知识点 模仿新特性 UICollectionViewFlowLayout自定义布局 相册 瀑布流(淘宝购物之类的 二.复习 a.UICollectionView 和 tableview共享一套AP ...

  7. Objective-c——UI基础开发第十一天(UICollectionView)

    一.知识点 1.UICollectionView的dataSource .delegate 2.UICollectionView多组数据和单组数据的展示 3.UICollectionView.UICo ...

  8. Objective-c——UI基础开发第十天(自动布局)

    一.autoresizing 的使用(了解) 只能参照父控件 1.实现横竖屏幕切换,不能把控件的frame血丝,需要进行屏幕适配 2.需要参照父控件 use auto layout禁用 才会出现aut ...

  9. Objective-c——UI基础开发第九天(QQ好友列表)

    一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...

  10. Objective-c——UI基础开发第八天(QQ聊天界面)

    一.知识点: QQ聊天界面 双模型的使用(dataModel和frameModel) UITextField的使用 通知的使用 拉伸图片的两种方法(slicing/image对象的resizeable ...

随机推荐

  1. jsp页面取得一对多中的set集合的size

    jsp中使用${list.size }会编译成list.getSize()方法,并不能获取list的长度,因为程序回去找List对象中的getSize()方法,所以只能想别的办法, 一种方法是在后台程 ...

  2. likely && unlikely in GCC

    在linux内核源码或一些比较成熟的c语言架构源码中,我们常会见到类似下面的代码: if (unlikely(!packet)) { return res_failed; } // OR if (li ...

  3. Daily Scrum02 12.06

    由于一些原因,我们的会议没有在昨天如期举行.今天,我们首先将到目前为止的进度进行了总结. 我们第二轮迭代的主要目标是优化算法,美化界面,增加单词软件的趣味性. 我们准备将软件做的更亲民,界面更友好,我 ...

  4. SQLite的原子提交原理

    本文描述了sqlite为保证数据库文件不被损坏而采取的种种手段.. 以下是原译者的摘要:http://www.kuqin.com/shuoit/20150618/346693.html 摘要: 本文源 ...

  5. Java Service Wrapper简介与使用

    在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...

  6. 中科院开源协会镜像站 Android SDK镜像

    中科院开源协会镜像站 Android SDK镜像测试发布 https://forum.opencas.org/t/184

  7. CodeIgniter(CI)框架中的验证码

    在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI ...

  8. Go-Agent部署与FQ教程(2016-10-28)

    这篇文章是为了帮助使用go-agent-crack来FQ的同学,主要是几个想用该项目来FQ的同学对github主页的FQ文档大力吐槽,索性写一篇详细的文档来支持一下大家,其中包含了google gae ...

  9. javascript立即执行函数

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解.  ( ...

  10. UPDATE INNER JOIN 两表联合更新

    UPDATE B_READMETER_HANDWORK INNER JOIN B_READMETER_ORDER_SP ON B_READMETER_HANDWORK.ID = B_READMETER ...