首页 > 代码库 > 黑马程序员-OC总结
黑马程序员-OC总结
------- IOS培训、android培训、java培训、期待与您交流! ----------
1.import的作用
impor是导入外部文件或框架,跟include功能相同,但是import的优点是可以防止重复导入。
impor是导入外部文件或框架,跟include功能相同,但是import的优点是可以防止重复导入。
2.说一下面向对象,面向对象有哪些特性,分别说一下
面向对象:面向对象简称OOP,在解决问题时我们只关心解决此方法的工具,也就是对象,不关心解决此方法的过程。
特性:有三个特性:
封装:封装是为了防止外界直接访问或修改对象的成员变量,提高了程序安全性。
继承:子类继承父类,子类完全拥有父类的成员变量或方法。减少了代码量,提高了类之间的联系。
多态:某一类事物的多种形态,例如我们可以通过父类调用子类方法。减少了代码量,提高了工作效率。
3.OC方法与C函数的区别
1>OC方法归对象所有,C函数是归整个程序所有。
3.OC方法与C函数的区别
1>OC方法归对象所有,C函数是归整个程序所有。
2>OC方法可以访问对象的成员变量,而C函数不能访问成员变量。
3>函数不能写在@interface 和 @end之间。
4.OC对象方法与OC类方法的区别
1>对象方法以—开头,类方法以+开头。
2>对象方法可以访问成员变量,类方法不能访问成员变量。
3>对象方法由对象调用,类方法由类调用。
4>对象方法可以传递参数,类方法不能传递参数。
5.self与super的用法
self是一个指针,指向了方法的调用者,如果是对象调用,则指向对象,如果是类调用,则指向类
super是调用父类方法,一般用于在重写父类方法的时候需要保留某些方法。
6.成员变量的作用域
@private:代表成员变量只能被当前类直接访问。
@protected:代表成员变量能被当前类或子类直接访问,是默认属性。
@public:代表成员变量能在任何地方被直接访问。
@package:代表成员变量只能在同一框架内直接被访问。
7.重写description方法的作用
更改NSLog显示在屏幕上的格式。
-description默认是以类名:内存地址 显示
+description默认是以类名显示。
8.说一下万能指针,点语法
万能指针:就是id,它可以指向任何对象,相当于NSObject *
点语法:是成员变量的setter和getter方法的简写。如果通过点语法赋值,则是setter方法,如果通过点语法返回某个值,则是getter方法。
9.@property与@synthesize的用法
@property:
1>可以自动声明成员变量的setter和getter方法。在XCODE4.5以后还可以自动实现变量的setter和getter方法。
2>可以自动生成下划线_加成员变量名的成员变量(eg:_age),类型是@private。
3>@property 是在头文件中使用。
@synthesize:
1>可以自动实现成员变量的setter和getter方法。
2>可以自动生成成员变量名(eg:age),且类型是@private。
3>@synthesize是在.m文件中使用。
10..h和.m文件的分工
.h:此文件是声明有哪些方法和成员变量 。
.h:此文件是声明有哪些方法和成员变量 。
.m:此文件是实现变量的方法。
11.内存管理的管理范围、原理、原则、体现在哪些地方
管理范围:所有继承NSObject的对象。
原理:通过引用计数器是否为0进行判断,如果某个对象的引用计数器为0,则此对象已经被回收,否则没有被回收
原则:1>如果谁想使用某个对象,则需要对对象进行retain操作。
2>如果谁想释放某个对象,则需要对对像进行release操作。
3>谁retain,谁release,谁alloc,谁release。
体现:1>@perproty参数方面,拥有retain、assign和copy。retain和copy会对对象的引用计数器+1;
2>autorelease方面。会对对象池中的所有对象进行一次release操作。
12.@property的参数有哪些,他们的作用分别是什么?
set内存管理方面:
retain:对旧值进行release,对新值进行retain操作。
assign:说明不需要进行内存管理,直接赋值
copy:release旧值,copy新值。
是否需要setter和getter方法方面:
Readwrite:需要setter和getter方法。
Readonly:只需要getter方法。
方法名方面:
setter = 方法名。设置setter方法名
getter = 方法名。设置getter方法名
多线程方面:
nonatomic:不需要多线程,高性能。
atomic:使用多线程,性能较低。
13.autorelease的作用、好处、注意
作用:1>将所有对象加入自动释放池中。
作用:1>将所有对象加入自动释放池中。
2>当池销毁时会对池中所有对象进行一次release操作。
3>会返回对象本身。
4>不会影响对象引用计数器。
好处:1>不需要关心对象释放时间。
2>不需要关心何时使用release。
注意点:1>如果程序占用内存较大,则不使用autorelease。
2>如果程序占用内存较小,则使用autorelease影响不大。
14.什么是分类(category)?分类与继承的区别?
分类:分类是在不更改原有类成员变量和方法的情况下,给原有类增加方法。
分类与继承的区别:
1>分类只能增加方法,不能增加成员变量;
继承是子类完全拥有父类的成员变量和方法,还可以在父类的基础上增加自己的成员变量和方法。
2>分类方法名如果和原有类的方法名相同,则分类的方法会覆盖原有类中的方法。
继承下子类中的方法名不能和父类中的方法名相同。
15.说一下什么是协议(protocol)?以及其中协议中的两个关键字?
协议是用来声明多种方法,以方便其它类能够随时调用,提高了程序编写效率。
@required:说明此方法必须被实现,如果不被实现就会发出警告。
@optional:说明此方法可以被实现,也可以不被实现。
16.说一下你对代理的理解
定义:为其它对象提供一种代理以用来控制这个对象。
eg: 小明不想做饭,因此请了个保姆,但是请保姆需要签一份协议,保姆需要遵守协议。所以保姆就是代理,代理需要遵守某个协议。
条件:如果要成为代理,则必须遵守某个协议(协议用于声明方法,限制代理必须拥有某个方法)。
作用:可以监听某个方法是否被触发。
优点:耦合性较低,增加了代码的弹性。
eg:代理被删除了,但是Person还在。代理和对象之间互不影响。
作用:block用于保存一段代码,方便程序随时调用
与函数相同点:1>都有返回值
2>都有形参
3>调用方法相同
4>都可以保存代码
与函数不同点:1>blok的标志是^,而函数没有
2>block默认情况下不能修改局部变量值,函数可以。
3>在block情况下,当语句结束时,需要在大括号外部添加分号,而函数不需要。
18.@class与#import有什么区别
1>@class只是在.h文件中声明有某个类,并不知道此类的成员变量和方法。
#import可以被导入文件的所有信息,包括成员变量和方法。
2>使用@class时,如果同时导入上百个文件,一旦被导入文件有所更改,则只需更改头文件,不需重新编译,效率较高。
如果使用#import,则需要重新编译,效率较低。
3>如果在.m文件中需要调用某个类的成员变量和方法,则需要#import导入。
19.常用的结构体有哪些?
NSRange:表示范围。
NSPoint/CGPoint:表示点位置
NSSize/CGSize:表示UI的尺寸大小
NSRect/CGRect:表示UI的位置和尺寸大小
20常用的类以及集合
常用类:NSString/NSMutableString
集合:NSArry/NSMutabArry(有序)、NSSet/NSMutableSet、NSDictonary/NSMutableDictonary、NSDate、NSObject
21.copy与retain的区别?
浅拷贝情况下:copy就是retain。
深拷贝情况下:copy会产生新对象,源对象引用计时器不变,副本计数器加1.
22.遍历集合有几种方式?分别说一下
有三种方法遍历:
有三种方法遍历:
方法一:普通遍历:
1 for (int i=0; i<array.count;i++) 2 { 3 NSLog(@"%@",array[i]); 4 }
方法二:快速遍历
1 for (id obj in array) 2 { 3 NSLog(@"%@",obj); 4 }
方法三:block遍历
1 [array enumerateObjectsUsingBlock: 2 ^(id obj,NSUInteger idx, BOOLBOOL *stop) 3 { 4 NSLog(@"index = %d,元素 = %@",idx,obj); 5 if ( idx = 0) 6 { 7 *stop = YES;// 停止遍历 8 } 9 } ];
23.NSValue与NSNumber的区别
1>NSNumber是NSValue的子类。
2>NSNumber只能包装基本数据类型,而NSValue可以包装任意类型,例如字符、数组、结构体等。
黑马程序员-OC总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。