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. 推流和拉流的概念以及RTMP和HLS协议

    推流为将直播内容推送至服务器的过程:拉流为服务器已有直播内容,用指定地址进行拉取的过程. rtmp rtmp是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写. ...

  2. Tickets——H

    H. Tickets Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this i ...

  3. *HDU 1385 最短路 路径

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  4. 开发中容易写错的一条SQL语句

    select * from tableName where name = like '%糖糖%' 出错的地方:name后面有=和like 出错的原因:复制过来的,其它地方是=,没有删掉直接加了like ...

  5. mysql 定时任务

    mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler';   检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...

  6. static关键字

    static关键字 static是静态修饰符,一般修饰成员.被static修饰的成员属于类,不属于单个这个类的某个对象. 1.static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 (还 ...

  7. 【运维工具】Git代码发布系统

    引言 代码发布系统是互联网公司必备的运维系统,作用主要用户发布业务代码 到 业务服务器 为什么需要代码发布系统 有的同学可能说,我们公司服务器就那么一台,做个发布系统太麻烦了? 不认同这说法 发布系统 ...

  8. C# 构造post参数一种看起来直观点的方法[转]

    因为本人经常爱用C#做一些爬虫类的小东西,每次构造post参数的时候,都是直接字符串拼接的方式的,有时候改起来不太方便. 场景: 需要post一个地址 参数列表 : username:管理员 pass ...

  9. php token的生成

    转载自:http://blog.snsgou.com/post-766.html --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的 ...

  10. cloudera learning7:Hadoop资源管理

    Linux Control Groups(cgroups):在操作系统级别进行资源分配,可通过Cloudera Static Service Pools配置. YARN调度器配置:对运行在YARN上的 ...