1. (1)面向过程:一种以事件为中心的编程思想
(2)面向对象:一种以对象为中心的编程思想
2.get和set是用来访问和修改对象里的属性值
注:OC里的命名规范,get方法名不需要加get前缀
eg: int age = [person getAge]; (false)
int age = [person age];(true)
3. self是用来调用本类对象的实例变量和方法
super是用来盗用从父类继承下来的方法
4.@property :为一个属性自动生成get和set方法
5.类可以调用类方法,不可以调用实例方法,但可以通过创建对象来访问实例方法
6.便利构造器:一种快速创建对象的方式,其本质是把初始化做了一次封装,方便外接使用(即:init的同时进行赋值)
7. 单例模式:可以保证系统中一个类只有一个实例,并且该实例易于外界访问,从而方便实例个数的控制,得到节约资源的作用。
(1)主要特点: 1⃣️一个类只有一个实例;
2⃣️必须自己创建这个实例;
3⃣️同时必须自行向整个系统提供这个实例.
(2)实现角度: 1⃣️只提供私有的构造函数;
2⃣️类定义中含有一个该类的静态私有对象;
3⃣️该类提供了一个静态的共有的函数用于创建或获取他本身的静态私有对象).
8.工厂模式:类似于互联网商业模式中的C2B
9.面向对象的三大特征:封装、继承、多态
(1) 1⃣️继承的作用:减少代码的重复,减少程序的设计时间;
2⃣️多态定义:同一类型,多种表现形态
多态作用:解决冗余,可扩展和可维护性强
注:多态的条件中必须存在继承关系,子类重写父类方法,父类声明的变量指向子类
(2) OC中的类都是单继承的
(3) 方法的重写:1⃣️必须有继承,2⃣️子类方法和父类方法的定义一样
10.字符串的长度使用length属性来获取;
(1)扩展字符串:
str1 = www
str2 = baidu
stringByAppendingPathComponent——> www/baidu
stringByAppendingPathExtension——>www.bai
stringByAppendingString—->wwwbaidu
stringByAppendingFormat—->wwwbaidu
(2)数组中不能存放基本数据类型
(3)集合是无序的,存储的对象不允许重复出现
11.内存管理:
重点—————————————黄金法则—————————————————————
当对对象使用了alloc、retain、[mutable]copy时,则必须使用相对应的release或者autorelease
————————————————————————————————————————
(1)基本数据类型不需要内存管理(int,long,double,float,struct,char)
(2)当一个所有者做了retain、alloc、copy操作时,则拥有了对象的所有权
当使用release,autorelease时,则释放了对象的所有权
(3)1⃣️使用copy,alloc,new构造对象时,retainCount为1;
2⃣️调用对象的retain方法增加1retainCount,调用对象的release方法减少1retainCount
3⃣️当对象的retainCount为0时,delloc自动调用,自动释放对象内存,否则分配给对象的内存将一直被占用.
(4)注意:属性的内存管理
一个类有属性声明用了retain、copy,则必须在这个类的delloc方法中释放属性
(5)autoReleasepool
1⃣️对象将所有权交给最近的自动释放,并由其全权管理 (嵌套使用自动释放池)
2⃣️自动释放池销毁时,会对里边的所有对象发送一条release消息
12.ARC自动引用计数管理内存
(1)不能使用releaseCoun属性t打印引用计数
——————————————————————————————————
(2)累的delloc方法中不能再去调用[super delloc];
————————————————————————————————
(3)一个堆内存是否被释放,取决于__strong类型的栈指针是否为0,为0则释放内存,与__weak指针无关 ,weak主要为了防止交叉引用(代理模式)
(4)ARC的黄金法则:::只要还有一个变量(指针)指向对象,对象就会被保存在内存中
(5)strong相当于retain,weak不允许在非ARC中使用
(6)在ARC中,delloc方法一般都不需要使用,because we can’t use release of object;
(7)注意:在使用KVO和通知时,must在delloc方法中移除
(8)对某些文件禁用ARC
Build Phases ——>Comile Sources ——>选中文件添加——> —fno—objc—arc
(9)对哪些文件使用ARC
Build Phases ——>Comile Sources ——>选中文件添加——> —fobjc—arc
(10)X-xode自动转换工具最好只是用一次,使用之前先备份代码,备份代码,备份代码啊,否则后果不堪设想
13.类目、协议、扩展(扩展类的方法)
(1)修改源代码,创建此类的子类
(2)类目:1⃣️为现有的类添加一个或多个新的方法
2⃣️可以被子类继承
3⃣️可以作为原始类的一部分,与原始类中的方法同级(为已有的类添加新的方法。(只能添加方法,不能添加实例变量))
注意:1⃣️类目中只能写方法,不能添加成员变量
2⃣️同一个类可以添加多个类目,但不能重名
3⃣️可以覆写现有类的方法,但覆写之后不能调用原始的方法
(3)延展:在类的实现文件中定义的类目,延展是匿名的类目,定义私有的方法
就是定义自己的私有方法。(可以添加方法,或者实例变量)
(4)协议:声明了可以被其他类实现的方法,协议不是类,只是其他对象可以实现的接口
(5)instancetype和id异同点
相同点:都可以作为方法的返回类型
不同点:1⃣️instancetype可以返回和方法所在类相同类型的对象,而id只能返回未知类型的对象,
2⃣️itancetype只能作为返回值,不能像id一样作为参数
14.KVC && KVO
(1)KVC即:NSKeyValueCoding 一个非正式的协议,提供一种机制来间接访问对象的属性
KVO就是基于KVC实现的关键技术,keyValueObserve,他能观察一个对象的KVC key Path 值得变化
(2)KVO的使用步骤:
1⃣️添加观察者
2⃣️接收监听变更的方法:监听方法会在属性的值发生变化的时候自动调用
(3)通知:
//获取通知中心
+(NSNotificationCenter)
////发送通知
-(void)postNotification:(NSNotification*)notification
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
- python入门到精通[二]:基础学习(1)
摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- Yaf零基础学习总结4-Yaf的配置文件
在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...
随机推荐
- 【原创】jQuery 仿百度输入标签插件
1.先上效果图 2.调用方式 <link href="/Styles/tagsinput.css" rel="stylesheet" type=" ...
- Razor语法
1. 截取字符串 @(i.Title.Length > 18 ? i.Title.Substring(0, 18) + "" : i.Title) 2. 格式化日期 @s ...
- js清除cookie
例如要清除键为abc的cookie: document.cookie = "abc=0;expires=" + new Date().toUTCString();
- T-SQL 查询出某个列总值大于X的数据
原文: https://www.lesg.cn/netdaima/sqlservert-sql/2016-459.html 今天操作查询的时候遇见一个这样的要求: 有一张表 用户ID 购买日期 购买金 ...
- Web端权限管理新增实用功能:批量增加操作,简单方便快速!
扩展了吉日嘎拉的Web端权限管理功能后,每次添加菜单倒没啥问题,毕竟菜单的数量有限,可是每增加一个模块.功能或者说权限控制点,就得针对各种常规操作,新增很多遍. 浪费时间,还容易出错.新增了一个字典表 ...
- 重写onStart()函数
Android开发中有时会遇到这种情况,在数据列表的Activity中点击添加按钮,弹出另一个Activity添加数据,这样返回数据列表的Activity时就需要刷新数据列表(因为添加了一条数据).这 ...
- TSwitch 中文简繁显示支持(XE6 Android)
说明: XE6 的 TSwitch 做了很多改进,包含多语显示处理,但 XE6 似乎只认定一种中文语系「zh」,它无法处理「zh_TW」.「zh_CN」.「zh_HK」.「zh_SG」等语系,不过可以 ...
- swipe.js 2.0 轻量级框架实现mobile web 左右滑动
属性总结笔记如下: <style> .swipe { overflow: hidden; //隐藏溢出 清楚浮动 visibility: hidden; //规定元素不可见 (可以设置,当 ...
- 开始自学H5前端-第一天
自从iOS工作丢了后 就萌生了自学这个想法 但是一直在纠结学哪一门语言好 我是计算机科学与技术专业的 其实对于我来说 学啥都算是有点基础的 但是被iOS坑惨了之后 就会不自觉的进行各个方向和前景分析 ...
- ThinkCMF-smeta扩展字段
ThinkCMF - 添加文章功能 没有上传文件功能,为了扩展这一功能,在页面加入如下代码: <tr> <td> <div style="text-align: ...