




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* 1.类是一组具有相同特性和行为的某一类事和物的集合. 2.对象是类的实例化. 3.计算机语言的目的:模拟和解决生活中的问题. 4.#include和#import的区别? 答:(1)#import是oc中导入头文件的关键字,而且只需导入一次就行. (2)#include是cc+导入头文件的关键字,include导入头文件容易引起交叉编译. 5.创建对象的语法: (1)类名 *对象名 = 类名 allocinit; (2)类名 *对象名 = 类名 new; 6.oc中的方法:(减号为实例方法,加号为类方法) -|+(返回类型)方法名 : 参数列表 /方法体 (1) 器就是方法的意思;(2)void意思是无返回值;Student为类名,意思为有Student类型的返回值 (3)with后面的name是属性的名称,newName是属性name的参数名称 初始化器:-|+(Student *)initWithName:(NSString *)newName self = super init;/继承父类NSObject的init(初始化)方法 self-name=newName; return self; 便利构造器:-|+(Student *)studentWithName:(NSString *)newName Student *student = Student allocinit;/实例化变量student = newName; return student; 7.属性 #interface property(nonatomic,retain)NSString *name;(声明) 等价于:(setter方法:设置器) -(void)setAge:(int)newAge age = newAge; #implemention synthesize name;(合成) 等价于:(getter方法:访问器) -(int)getAge return age; 8.点语法 (1)=liming; 等价于: stu setName:liming; (2)NSlog(%,); 等价于: NSlog(%,stu getName); 9.property有关语法 (1)readwrite 是可读可写特征;需要生成getter方法和setter方法. (2)readonly 是只读特性 只会生成getter方法 不会生成setter方法. (3)assign 赋值特性,setter方法将传入参数赋值给实例变量. (4)retain 表示持有特性,setter方法将传入参数先保留,再赋值,并且变量retaincount+1; (5)copy 通过copy将对象复制一份,之前的对象会释放. (6)nonatomic 表示单线程安全. (7)atomic 表示多线程安全. 10.变量作用域 (1)protected 表示只有该类和其子类可以访问该类的变量. (2)public 表示无论是自身还是子类的对象,还是其它类型的对象均能访问该类的变量. (3)private 表示只有该类本身的对象可以访问该类的变量. 11.面向对象三大特征: (1)封装:隐藏内部实现,稳定外部接口. (2)继承:子类继承父类的所有非私有的方法和属性. (3)多态:不同类型的对象,对同一方法名的不同响应. 注意: 要点一:oc中不允许多继承(一个类有多个父类),但允许多重继承(一个类的父类也拥有其自身的父类). 要点二:一个类调用方法时,先从本类方法找,找不到再从父类找,一直往上直到找到NSObject类中. 12. self:是指向当前对象的指针. super:调用父类的方法. id:是一个指向任何一个继承了NSObject类的对象. 13.开闭原则和里氏替换原则 (1)开闭原则(OCP Open Closed Principle): 核心是:对扩展开放,对修改关闭.改变一个软件时,应该通过扩展的方式来改变软件,而不应该修改原有的代码来实现变化. (2)里氏替换原则(LSP Liskov Substitution Principle): (is A)原则:任何基类可以出现的地方,子类一定可以出现. a.继承必须确保超类所拥有的性质子类中仍然成立. b.子类对象总是可以替换父类对象. 14.内存管理 (1)黄金法则:凡是对象使用了alloc,new,copy和retain,那么必须有相对应的release和autorelease. 引用计数机制:对象创建后,运行时系统通过对象维护的一个计数器来描述有多少个其他对象在使用自己,当计数器为0时,释放该对象占用的内存空间(该对象调用dealloc方法)。 (2)浅复制:指针拷贝,只复制指向对象的指针,拷贝后原来对象的引用计数会+1. 深复制:对象拷贝,复制引用对象,重新开辟一块内存,原来对象的引用计数不变. (3)OC采用的是引用计数机制管理对象所占的内存. (4)ARC(automotic reference counting)自动引用计数: 它会自动加入内存的控制代码,控制对象的生命周期.隐式的管理内存,编译器会在适当的地方自动插入retain,release和autorelease消息. ARC新特征:增加了竖向定义关键字,用strong代替retain,用weak代替assign. (5)释放内存是dealloc. 内存泄露的快捷键:command+shift+b. 内存泄露检测仪:command+I. (6)/字符串内存管理 /常量字符串,引用计数为-1或无穷大的数 NSString *str111 =kevin;/常量字符串的声明 str111 retain;/引用计数对常量字符串没有影响 NSLog(%ld,str111 retainCount); str111 release; /用initWithString创建字符串,引用计数为-1或无穷大的数 NSString *str2 = NSString allocinitWithString:alen; str2 retain; NSLog(%ld,str2 retainCount); str2 release; str2 release; /用initWithString创建字符串,引用计数为1(符合引用计数机制) NSString *str333 = NSString allocinitWithFormat:steven; str333 retain; NSLog(%ld,str3 retainCount); str333 release; str333 release; 注意:OC中的引用计数永远不可能为0. (7)程序在内存中运行,分几个区?各自用途? 答:a.栈区 由编译器自动分配释放存放函数的参数值,局部变量值等. b.堆区 一般由程序员手动分配释放,如果不释放可由系统释放. c.数据区 存储全局和静态变量. d.代码区 存放函数体的二进制代码. (8)引用和指针的区别? 答:引用是给变量起一个别名,也就是一个变量有两个名字,他们是同一块空间. 指针是分配一块内存用来保存变量的地址,间接引用变量. 15.类目,延展,协议 (1)类目(category):为已有的类添加方法. (2)延展(extension):为类添加私有方法. (3)协议(protocol):就是类A不方便实现的方法,委托类B实现.协议有两个修饰词:required(必须实现的方法),optional(选择实现的方法) 16.KVC,KVO以及通知中心 答:(1)KVC(key-value Coding)键值编码,是一种间接访问对象属性的方法.包括:setVaule: forKey: 和 valueForKey: 两个方法. (2)KVO(key-value OBserving)键值监听,它提供了一种监测属性变化的方法. /注册监听者 -(void)addobserver self addObserver:self forKeyPath:name options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil; /监听后返回消息 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context NSLog(% %,context,change); /移除监听者 -(void)dealloc /self removeObserver:self forKeyPath:name; name release; super dealloc; (3)通知(Notification) /注册通知 -(void)registerNotification NSNotification *notification; notification = NSNotification allocinitWithName:MEETINGNOTIFICATION object:nil userInfo:nil; /添加监听者 -(void)addObserver:(Workers *)worker NSNotificationCenter defaultCenter addObserver:worker selector:selector(getNotification) name:MEETINGNOTIFICATION object:nil; /创建并发送通知 -(void)postNotification NSNotificationCenter defaultCenter postNotificationName:MEETINGNOTIFICATION object:nil; /移除监听者 -(void)removrNotification:(Workers *)worker NSNotificationCenter defaultCenter removeObserver:worker name:MEETINGNOTIFICATION object:nil; 17. delegate和Notification的区别? 答:(1)delegate针对one-to-one关系,并且reciever可以返回值给sender; (2)notification 可以针对one-to-one/many/none,reciever无法返回值给sender; 所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件 18.可变和不可变的具体意思? 答:不可变得意思是,当一个对象初始化后,它的内存里面存的值不能改变了(调用的时候,一般是把值复制一份传个另一个变量).可变是,这个对象的内存值是可以改变的. 19.单例 (1)单例模式:保证一个类仅有一个实例,并提供一个全局接口. (2)手写一个单例: static MyClass *instance = nil;/创建全局静态实例 +(MyClass *)getInstance if(!instance)/如果instance为空才创建一个新的实例 instance = MyClass allocinit; return instance; 20.集合类 1.遍历 /字典遍历 for (int i = 0; i dict allValuescount; i+) NSLog(%=%,dict allKeysobjectAtIndex:i,dict allValuesobjectAtIndex:i); /数组遍历 方式一 for (int index = 0; index arr3 count; index+) NSLog(%,arr3 objectAtIndex:index); NSLog(-); 方式二 快速枚举法 for (id object in arr1) NSLog(%,object); 注意:a.表示字典 ()表示数组 ()表示集 b.键是唯一的,一个对象可以对应多个键. c.集合是无序的. /数组排序 方法一: NSArray *arr = NSNumber numberWithInt:23,NSNumber numberWithInt:16,NSNumber numberWithInt:28,NSNumber numberWithInt:90,NSNumber numberWithInt:4;/新语法(定义) NSArray *sortedArr = arr sortedArrayUsingSelector:selector(compare:); NSLog(%,sortedArr); 方法二: Student *stu1 =Student allocinit; stu1.score=85; Student *stu2 = Student allocinit; stu2.score=79; Student *stu3 = Student allocinit; stu3.score=98; NSArray *stuArr =stu1,stu2,stu3; NSArray *sortedSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第1课 改革变法风潮与秦国历史机遇说课稿-2025-2026学年高中历史人教版2007选修1历史上重大改革回眸-人教版2007
- 第五课 多彩的世界-颜料桶工具的使用说课稿-2025-2026学年初中信息技术浙教版广西 宁波八年级下册-浙教版广西 宁波
- 第2单元第8课《涂鸦王国-鼠标控制》-教学设计清华大学版(2012)初中信息技术九年级上册
- 2025年全国电工技师职业技能考试笔试试题含答案
- 学校开展铸牢中华民族共同体意识主题教育系列活动总结
- 2025年N1叉车司机考试练习题及答案
- 2024年人工智能训练师高级理论题库及答案
- 2025年bec初级真题答案解析
- 2025四川建筑安全员B证考试题库及答案
- 2025年新闻记者职业资格必考题含答案
- DB32T-乡镇农产品质量安全监管机构建设规范编制说明
- 四川省挤塑聚苯板建筑保温工程技术规程
- 一例晚期直肠癌多发转移患者镇痛治疗病例分享
- 《工业互联网技术导论》 课件全套 第1-10章 智能制造与工业互联网-工业人工智能
- Ice-O-Matic CIM登峰系列制冰机培训手册
- 加油站应急情况处理技巧
- 高中英语完形填空高频词汇300个
- 2023-2025年世纪公园综合养护项目招标文件
- 男朋友男德守则100条
- 食品安全风险管控日管控检查清单
- 乡村振兴汇报模板
评论
0/150
提交评论