OC的总结 ***希望对大家有帮助*** ---高小杰
1. NSLog 是Foundation提供的一个输出函数,它的功能非常强大,不仅可以输出字符串,还可以输出各种对象,到后面程序还会见到大量的使用NSLog()函数。
2. NS 是一个前缀,Cocoa对其所有函数、常量、类型前面都会增加“NS”前缀,该前缀用于区分该函数来自Cocoa,而不是来自其它程序包
3.常用扩展名
.c C语言的源程序
.cpp .cc C++的源程序
.h 头文件
.m oc源程序
.mm oc++源程序
.o .out c,c++,oc编译后生成的文件
4. Cocoa框架包括Foundation和Application Kit(简称AppKit)。
5. 创建对象语法:[[类名 alloc] 初始化方法]
6. 方法类型标示(返回值类型)方法名:(参数类型)参数
例如:
- (NSArray *)arrayByAddingObject:(id)anObject;
+ (instancetype)arrayWithObject:(id)anObject;
7. [调用者 方法名:参数]
8. Self指的是类对象本身,Self用来调用本类对象的方法
9. id类型泛指任意类型,程序在运行时系统会动态检测变量的实际类型
10.封装访问控制符
@private 只允许在本类中访问,私有变量
@protected 允许在本类和子类中访问
@public 允许在任意地方访问
@package 允许在同一映像中访问
访问级别从小到大:
@private --→@package = @protected --→@public;
11. Set方法对实例变量进行赋值
Get方法获取实例变量的值
12.合成存取方法
使用@property 定义属性,使用@synthesize声明属性
13.合成存取方法特殊指示符
· Atomic 原子性,考虑线程安全
· Nonatomic 非原子性,不考虑线程
· readOnly 只有get方法,没有set方法
· Readwrite 系统合成set,get方法
· Retain 引用计数加一
· Strong 强引用
· Weak 弱引用
14. 点语法是一种简化写法,本质依然是调用set,get方
15. KVC: 键值编码:允许以字符串形式间接操作对 象的属性。
setValue: forKey: 为指定属性设置值
valueForKey: 获取指定属性的值
16. 处理不存在的key
· 重写setValue: forUndefinedKey: 方法
· 重写valueForUndefinedKey:方法
17. 处理nwil值
· 重写setNilValueForKey:方法
18 . 调用setValue: forKeyPath: 方法
调用valurForKeyPath:方法
19. kvo: 键值监听:
· addObsever: forKeyPath:options:context:
注册一个监听
· removeObeseverForKeyPath:
移除一个监听
· 重写observerValueForKeyPath:ofObject:change:context方法
20. 子类可以通过继承获得父类的全部成员变量和方法
21.子类重写父类的方法
· 子类包含与父类同名方法的现象被称为方法重写;
· 注意:
· 方法名和方法中的形参都需要完全相同;
· 子类调用方法时优先级比父类高
22.OC中只支持单继承,共性的东西放在父类中,个性的东西放在子类中。
23. super用于限定该对象调用它从父类继承得到的属性和方法
24. OC中的包装类主要有NSNumber和NSValue
25. 打印对象:需要重写父类的description方法,是一个‘自我描述’的方法
26. ==和isEqual区别:
· 对象在内存中的地址是唯一的,==两边如果是基本数据类型,则判断内容 是否相同,如==两边是对象,则判断指向该对象的指针是否相同,即是否为同一对 象
· isEqual判断对象内容是否相同
27. NSString :字符串
比较字符串:
· 测试字符串内容是否相同:isEqualToString:
· 测试字符串是否为同一个对象:==
· 比较字符串大小:caseInsensitiveCompare:
· 字符串替换:stringByReplacingOccurrencesOfString:
· 判断字符串是否以*开头:hasPrefix:
· 判断字符串是否以*结尾:hasSuffix:
· 判断字符串长度:length;
· 全部大写:uppercaseString;
· 全部小写:lowercaseString;
· 首字母大写,其他字母变小写:capitalizedString;
· 转换成BOOL类型:boolValue
· 转换成浮点型:floatValue
· 转换成数组:componentsSeparatedByString;
//components组件 内容
截取字符串
· 从开头一致截取到指定的位置,但不包括该位置的字符:(指定位置,但是不包括)
subStringToIndex:
· 从指定位置开始(包括指定位置字符),并包括之后的全部字符:
subStringFromIndex;
· 截取一个范围内的字符:
NSRange;
拼接字符串
· stringByAppendingFormat:
· stringByAppendingString:
28. 可变字符串
- 插入字符串:insertString:
x,y,是两个参数,x是坐标,y是长度。
- 删除字符串:deleteCharactersInRange:NSMakeRange(x,y)
- 替换字符串:replaceCharactersInRange:NSMakeRange(x,y)
- 添加字符串:appendString:
appendFormat:
29. NSOrderedSame:相等;
NSOrderedDescending:降序;
NSOrderedAscending : 升序;
30. 不可变数组 NSArray;
- 获取数组中得元素个数:count;
- 根据下标访问对象:objectAtIndex;
- 在原来的数组上追加对象,返回一个新的数组对象:arrayByAddingObject:
- 用指定字符串将数组中得元素链接起来:componentsJoinedByString:
- 数组中是否包含某对象:containsObject:
- 查询指定对象在数组中得元素,如果没此元素,返回NSNotFound: indexOfObject:
- 获取数组中最后一个元素:lastObject:
31.集合排序:
sortedArrayUsingComparator:
sortedArrayUsingFunction: context:
sortedArrayUsingSelector:
32.可变数组——NSMutableArray
- 向数组中添加一个元素:addObject:
- 向数组中指定下标插入元素:[ insertObject:atIndex:]
- 移除最后一个元素:removeLastObject:
- 移除指定元素:removeObject:
- 移除指定下标的元素:removeObjectAtIndex:
- 向数组中添加数组:addObjectsFromArray:
- 替换指定的下标元素:replaceObjectAtIndex: withObject:
- 移除所有对象:removeAllObjects:
33.在foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序的,同一个对象只能保存一个,并且它也可分为可变和不可变的集合对象(可变集合对象,NSMutableSet)
- ——-NSSet:不可变集合的常用方法:
- 集合中对象的个数:count:
- 以数组的形式返回集合中所有的对象:allObjects;
- 返回集合中得任意一个对象:anyObjec;
- 集合中是否包含内容为2的字符串对象,如果包含返回YES,否则返回NO:containsObjec:@“2”;
- 判断两个集合中是否存在有相同的元素,如果有返回YES,否则返回NO:intersectsSet:
- 判断两个集合中是否存在有相同的元素,如果匹配返回YES,否则返回NO:
isEqualToSet:
- 判断集合1是否是集合2的子集合,如果是返回YES,否则返回NO:isSubsetOfSet:
- 集合中减法:minusSet:
- 交集:intersectSet:
- 并集:unionSet:
- 给集合重新赋值:setSet:
34.(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合。存放的是键值对,类似于Java的Map。正如,我们在字典里查找单词的定义一样。通过(key键),查找相应的(value值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值必须是唯一的。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。
- 字典的初始化
- 以一个元素初始化:dictionaryWithObject:
- 初始化多个元素:dictionaryWithObjectsAndKeys:
- 初始化新字典,新字典包含其他的字典:dictionaryWithDictionary:
- 以文件内容初始化字典:dictionaryWithContentsOfFile:
- 对字典的key值排序:
keysSortedByValueWithOptions: usingComparator:
keysSortedByValueUsingSelector:
keysSortedByValueUsingComparator:
- 可变字典—NSMutableDictionary
- 它继承自NSDictionary
35.Cocoa中提供了NSPredicate类,指定过滤器的条件,将符合条件的对象保留下来。
- 运算符号的加入,谓词不区分大小 与:&& , AND;或 ||, OR
- BEGIN SWITH 检查某个字是否以**开头
- ENDSWITH 检查某个字符是一**结尾
- CONTAINS 检查包含某个字符
- 模糊查询:—-Like 检查包含某个字符
36. 顺序枚举器:objectEnumerator
逆序枚举器:reverseObjectEnumerator
37.一般方法的单词前缀:
- 添加元素的方法:add开头
- 删除元素的方法:remove开头
- 替换元素的方法:replace开头
- 动态传入属性名:%K
- 动态设置属性值:%@
OC的总结 ***希望对大家有帮助*** ---高小杰的更多相关文章
- 利用OC对象的消息重定向forwardingTargetForSelector方法构建高扩展性的滤镜功能
在OC中,当像一个对象发送消息,而对象找到消息后,从它的类方法列表,父类方法列表,一直找到根类方法列表都没有找到与这个选择子对应的函数指针.那么这个对象就会触发消息转发机制. OC对象的继承链和isa ...
- 数电基础之《OC门》
OC门,又称集电极开路门,Open Collector. 为什么引入OC门?实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去 ...
- CSS字体记录
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAACnCAIAAADVOG9FAAAgAElEQVR4nOy9eXwcxZk/vL/9ve8eb7 ...
- 我也要学iOS逆向工程--函数
大家好,这篇我开始学习函数了.先学 C 函数,然后再 OC 的吧.OC 应该复杂点的吧. 然后看看汇编情况哦! 学习函数呢,肯定要弄清楚几个事情. 1.跳转地址. 2.返回地址 3.参数 4.函数获取 ...
- CSS字体选择问题
在西方国家的字母体系,分成两大字族:serif 及 sans serif.其中 typewriter 打字机字体,虽然也是 sans serif,但由于他是等距字,所以另独立出一个 Typewrite ...
- 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器
http://www.amobbs.com/thread-4503884-1-1.html 这个小玩意,采用 ATMEL 的传统51MCU作主控制芯片,加上SD卡和显示屏,就可以作简单的音乐播放器了, ...
- MTK GPIO 一些理解
基于6575平台: GPIO驱动程序提供了两个接口: (1)内核空间:所提供的GPIO驱动程序,驱动程序可以调用其他函数 (2)用户空间:用户空间的程序可以通过发送IOCTL /dev/ mtgp ...
- 【Zookeeper系列】Zookeeper命令操作(转)
原文链接:https://www.cnblogs.com/sunddenly/p/4031881.html 一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他 ...
- 5、Zookeeper命令操作
一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...
随机推荐
- Bulk_Collect 调用方式集锦
事先申明,本文所有示例都皆源于<Expert PL SQL Practices>这本电子书的第六章.小陈觉得在学习PLSQL的过程中,将来或许会用到,在此笔记一番. 正文如下: 首先准备基 ...
- js模块开发(一)
现在嵌入页面里面的javascript代码越来越复杂,于是可能依赖也越来越严重,使用别人开发的js也越来越多,于是在理想情况下,我们只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 于是j ...
- android studio增量更新
一.概述 1.1 概念 增量更新即是通过比较 本机安装版本 和 想要安装版本 间的差异,产生一个差异安装包,不需要从官网下载并安装全量安装包,更不需要将本机已安装的版本下载,而仅仅只是安装此差异安装包 ...
- python学习 第一天
正式学习python第一天,网上找到了python教程,带练习题的,又装了ubuntu. 这是学习笔记: list[]: 可变,append/1,insert/2,pop/index? tuple() ...
- Windows下的Memcache安装 linux下的Memcache安装
linux下的Memcache安装: 1. 下载 memcache的linux版本,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent. 官方网址:http ...
- Sublime 常用插件简介
Sublime 常用插件简介 emmet: 前端必备神器.花个十几分钟学下Emmet语法 ,就可以极大提高web开发者HTML和CSS工作效率啦.一句话,牛逼---必备 CSS3: CSS3语法高 ...
- UI控件闪烁及刷新
我们常常在一个窗口上放置很多控件,在改变窗口大小时,控件会跟着一起闪烁... 此时,可以将窗口添加WS_CLIPCHILDREN属性即可.(如果包含多层,都需要WS_CLIPCHILDREN属性) 默 ...
- Ubuntu下安装R语言和开发环境
[简介]R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. [R语言的安装]官网:https://www.r-pr ...
- 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决
Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty ...
- C#枚举类型
枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32. 定义 默认基数从0开始,也可指定数值. enum Days { Saturday, / ...