<span style="font-size:18px;">1、简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用? 答(1.)内存管理机制
a.引用计数 由于iOS没有垃圾回收机制,ios采用应用计数来确定一个对象是否释放。
b.改变引用计数的操作alloc,retain,release,copy,dealloc等(具体解释看第一题)。yu
c.便利构造器
d.自动释放池 每次对象调用autorelease方法时(obj-c中的正式说法应该是:对象发送autorelease消息),对象的引用计数并不 真正变化 , 而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain或release消息时,池中的所有对象的这种要求一一被执行 (即:pool被销毁前,会通知池中的所有对象,全部发送release消息真正将引用计数减少,如果对象之前有发送过autorelease消息)
e.线程 注意当视图退出时,需要关闭自己所开线程Release -----,alloc 开辟空间 deaclloc销毁空间 .手动调用dealloc的时候会强制将引用计数置为0readwrite,可读可写,让系统生成setter和getter   readonly,只可读,只生成getterassign引用计数不会+1,适用于基本数据类型.常用于指向储存于静态区的变量以及delegate,直接赋值retain引用计数+1,获得对象的所有权copy 复制一个对象,并且储存在不同的内存区.原对象的引用计数不变.遵循NSCoping协议的可以深拷贝
Nonatomic非原子性的,不保证多线程下保护安全 atomic原子性,保证多线程下安全.有一个属性需要多个线程同时访问一个变量,使用atomic能够自动加锁解锁.Strong,用于ARC模式下,表明对象属于强引用.类似于retain,但是比retain更加安全,只要对象存在拥有者,就可以引用,不会被释放.只要对象失去了拥有者,立即被抛弃.不必再将已经指向已经释放的对象的指针指向空.避免了野指针.Weak类似assign,弱引用.应用计数不会增加.释放指针自动置为nil;2、类变量@protected ,@private,@public,@package,声明各有什么含义?
通过->的方式访问成员变量
@protected受保护的.该类和所有子类中的方法可以直接访问这样的变量。
@private 变量私有的,该类的方法可以直接访问变量。
@public 所有类都可以访问
@package 表示框架内访问,外部无法访问
3、线程是什么?进程是什么?二者有什么区别和联系?
线程,是进程的一个具体实例.程序运行的最小单位,是被系统独立调度和CPU的基本运行单元.进程是操作系统中可以并行工作的基本单元,一个应用程序有一个进程,一个进程中至少有一个线程.进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程
4、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
在一个进程中有多个线程共同存在,每个线程执行各自的任务,相互之间不会干扰,一个线程可以创建或者撤销其他的线程.让一个进程可以同时执行很多任务.这就减少了等待时间,提高了进程的运行效率.但是多线程会耗费资源,并且由于一个线程死掉会造成整个进程死掉.多线程也容易造成安全性问题.Thread使用GCD使用NSOperationQueue5、线程同步和异步的区别?IOS中如何实现多线程的同步?
线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 ,串行执行任务  线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制,并行执行任务使用GCD的主队列.使用NSOperationQueue,把最大线程数设为16、假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd
int main(int argc, const char * argv[])
{//    1.首先创建一对象用于存储要操作的字符串NSMutableString *str = [NSMutableString stringWithFormat:@"aabcaaaadcccbdddbbbdadadada"];NSInteger count = str.length;
for (int i = 0; i < count; i++) {char c = [str characterAtIndex:i];for (int j = i + 1; j < count; j++) {char d = [str characterAtIndex:j];if (c == d && j != i + 1) {[str replaceCharactersInRange:NSMakeRange(j, 1) withString:@"#"];  // 遇到不相邻的相同字符,替换成#}}}for (int i = 0; i < count; i++) {// 遍历字符串, 找到 # 删除if ([str characterAtIndex:i] == '#') {[str deleteCharactersInRange:NSMakeRange(i, 1)];count--;i--;}}NSLog(@"%@", str);return 0;
}7、获取一台设备唯一标识的方法有哪些?
http://www.cnblogs.com/max5945/archive/2013/06/24/3152292.html 详情见本文
答:1.UDID      2.UUID      3.MAC ADDRESS         4.OPEN UDID          5.广告标识符                 6.Vindor标示符ios7之后用的时keychain(钥匙串)8、ios类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。
Objective-C的类不支持多继承。可以实现多个接口(协议)。
Category是Objective-C的类别,是一种为现有的类添加新方法的方式。
重写一个类的方式用继承好。(1)使用继承可以定义一个具有父类所有功能的新类,它继承了父类的所有功能,当与父类功能有所不同时候,可以在子类中将其覆盖。(2)类别中无法向类中添加新的实例变量,类别没有位置容纳实例变量。
说明:
类别有两个方面的局限性:第一,无法向类中添加新的实例变量。类别没有位置容纳实例变量。第二,命名冲突,即类别中的方法与现有的方法重名。当发生命名冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始化方法。有些编程人员再自己的类别方法中增加一个前缀,以确保不发生命名冲突。
类别的作用:Cocoa中的类别主要用于3个目的:将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,以及向对象添加非正式协议。
9、堆和栈的区别?
1、内存分配方面:堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS回收。注意它与数据结构中的堆是两回事,分配方式是类似于链表。
可能用到的关键字如下:new、malloc、delete、free等等。栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部
量的值等。其操作方式类似于数据结构中的栈。
2、申请方式方面:堆:需要程序员自己申请,并指明大小。在c中malloc函数如p1 = (char *)malloc(10);在C++中用new运算符,但是注意p1、p2本身
是在栈中的。因为他们还是可以认为是局部变量。栈:由系统自动分配。 例如,声明在函数中一个局部变量 int b;系
统自动在栈中为b开辟空间。
3、系统响应方面:堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申
请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后
将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码中的delete语句才能正确的释放本内存空间。另外由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余
的那部分重新放入空闲链表中。栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否
则将报异常提示栈溢出。
4、大小限制方面:堆:是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内
存。由此可见,堆获得的空间比较灵活,也比较大。栈:在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内
存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定
好的,在WINDOWS下,栈的大小是固定的(是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
5、效率方面:堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便,另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空
间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。栈:由系统自动分配,速度较快。但程序员是无法控制的。
6、存放内容方面:堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有
程序员安排。栈:在函数调用时第一个进栈的是主函数中后的下一条指令(函数调
用语句的下一条可执行语句)的地址然后是函数的各个参数,在大多数
的C编译器中,参数是由右往左入栈,然后是函数中的局部变量。 注意:静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条
指令,程序由该点继续运行。
7、存取效率方面:堆:char *s1 = "Hellow Word";是在编译时就确定的;栈:char s1[] = "Hellow Word";是在运行时赋值的;用数组比用指针速度要快一些,因为指针在底层汇编中需要用edx寄存器中转一
下,而数组在栈上直接读取。10、ios本地数据存储都有哪几种方式?
http://blog.csdn.net/reylen/article/details/7977418
归档和反归档
plist(属性列表)
NSUsefDefult
数据库(SQLite)
文件读写
coreData
11、写出方法获取ios内存使用情况。(摘自:http://aasheaa.blog.163.com/blog/static/99333120126311332613/)
#import <sys/sysctl.h>
#import <mach/mach.h>// 获取当前设备可用内存(单位:MB)- (double)availableMemory
{vm_statistics_data_t vmStats;mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);if (kernReturn != KERN_SUCCESS) {return NSNotFound;}return ((vm_page_size *vmStats.free_count) / 1024.0) / 1024.0;
}// 获取当前任务所占用的内存(单位:MB)
- (double)usedMemory
{task_basic_info_data_t taskInfo;mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;kern_return_t kernReturn = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&taskInfo, &infoCount);if (kernReturn != KERN_SUCCESS)
{return NSNotFound;}return taskInfo.resident_size / 1024.0 / 1024.0;
} 12、深拷贝和浅拷贝的理解?答 浅拷贝:只复制指向对象的指针,不复制引用对象本身。深拷贝:复制引用对象本身。retain:浅拷贝copy:不可变 浅拷贝 可
变 深拷贝
mutablecopy:深拷贝
13、怎样实现一个singleton的类。
答 Singleton单例模式 http://blog.csdn.net/iukey/article/details/7339844
a.为你的单例类声明一个静态的实例,并且初始化它的值为nil。
b.在获取实例的方法中(比如下例中的 getInstance),只有在静态实例为nil的时候,产生一个你的类的实例,这个实例通常被称为共享的实例。
c.重写allocWithZone 方法,用于确定:不能够使用其他的方法来创建我们不得实例,限制用户只能通过获取实例的方法得到这个类的实例。所以,我们在allocWithZone方法中直接返回共享的类实例。
d.实现基本的协议方法 copyWithZone、release、retain、retainCount 和 autorelease,用于保证单例具有一个正确的状态。
dispatch_once()实现单例
14、什么是安全释放?
答 在release后,将该指针置空。
15、RunLoop是什么?
答 Runloop是什么东西? http://blog.csdn.net/sngal3/article/details/6881354
runloop是事件接收和分发机制的一个实现
当需要和该线程进行交互的时候。主线程默认有runloop。当自己启动一个线程,如果只是用于处理单一的事件,则该线程在执行完之后就退出了。所以当我们需要让该线程即监听某项事务事,就得让线程一直不退出,runloop就是这么一个循环,没有事件的时候,一直卡着,有事件来临了,执行其对应的函数
注意:自己runloop需要自己手动运行。在主线程里runloop系统自己创建,并且运行的。
16、什么是序列化和反序列化,可以用来做什么?如何在OC中实现复杂对象的存储?
答 把对象转换为字节序列的过程称为对象的序列化把字节序列恢复成对象的过程成为对象的反序列化
方法:
plist文件
文件读写
归档反归档
存数据库,coredata。
17、写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?
答 #define MIN(A, B) (A) < (B) ? (A) : (B);
宏定义注意事项:函数宏后面的参数都要用括号单独括起来,函数名大写。
18、iphone os有没有垃圾回收机制?简单阐述一下OC内存管理。
答 没有垃圾回收机制。
内存管理机制:
a.引用计数 由于iOS没有垃圾回收机制,ios采用应用计数来确定一个对象是否释放。
b.改变引用计数的操作alloc,retain,release,copy,dealloc等(具体解释看第一题)。
c.便利构造器
d.自动释放池 每次对象调用autorelease方法时(obj-c中的正式说法应该是:对象发送autorelease消息),对象的引用计数并不 真正变化 , 而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain或release消息时,池中的所有对象的这种要求一一被执行 (即:pool被销毁前,会通知池中的所有对象,全部发送release消息真正将引用计数减少,如果对象之前有发送过autorelease消息)
e.线程 注意当视图退出时,需要关闭自己所开线程f.block 主要block刚被创建出来的时候是在栈空间,需要copy到堆空间。19、简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?
答 按Home键进入后台:
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
返回前台
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application20、ViewController 的 alloc,loadView, viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?
答 loadView、viewDidLoad及viewDidUnload的关系 http://blog.csdn.net/q199109106q/article/details/8614044alloc申请内存空间时调用 init视图初始化时调用 属性初始化loadView加载视图时调用 布局代码
ViewDidLoad视图已经加载后调用
ViewWillAppear视图将要出现时调用 ViewDidUnload视图已经加载但没有加载出来调用 对属性置空
dealloc销毁该视图时调用
21、描述应用程序的启动顺序。
答 参考文档:
iPhone开发进阶
(2)iPhone应用程序的启动过程 http://mobile.51cto.com/iphone-284474.htm
iOS程序的完整启动过程及原理  http://my.oschina.net/panyong/blog/1828631、先执行main函数,main内部调用UIApplicationMain函数
2、UIApplicationMain函数做的事情
a.创建UIApplication对象。
b.创建UIApplication的delegate对象—AppDelegate。
c.开启一个消息循环。
每监听到对应的系统事件时,就会通知AppDelegate。d.为应用程序创建一个UIWindow对象(继承自UIView),设置AppDelegate的window属性。
e.加载info.plist文件,读取最主要storyboard文件的名称。
f.并且设置第e步创建的控制器为UIWindow的rootViewController属性(根控制器)。
g.展示UIWindow,展示之前会将添加rootViewController的view到UIWindow上面(这一步才会创建控制器的view)22、为什么很多内置类如UITableViewControl的delegate属性都是assign而不是retain?请举例说明。
答
23、使用UITableView时候必须要实现的几种方法?
答
24、写一个便利构造器。
答
25、UIImage初始化一张图片有几种方法?简述各自的优缺点。
答
26、回答person的retainCount值,并解释为什么
Person * per = [[Person alloc] init];
self.person = per;
答
27、这段代码有什么问题吗:
@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end
答:死循环 self.age
28、这段代码有什么问题,如何修改
for (int i = 0; i < someLargeNumber; i++) {
NSString *string = @”Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@“%@”, string);
}答 便利构造 求大写小写会不能释放
29、截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们。
答
30、用obj-c写一个冒泡排序
答
NSMutableArray
for
for
交换arr[j] exchangeObjectAtIndex
比较arr[j] compareWith arr[j+1]31、简述你对UIView、UIWindow和CALayer的理解
答:CALayer负责显示  UIView负责提供容器UIWindow作为整体的窗口32、写一个完整的代理,包括声明,实现
答:A类写协议,继承NSObject
B类实例A的对象33、分析json、xml的区别?json、xml解析方式的底层是如何处理的?
答:xml 节点
json 字典 通过key读取
xml 空间大
dom 解析成树形结构
sax simpleAPIForXML
json 类似dom  都是基于栈的形式进行解析 用key标签创建字典对象
34、ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?
答:出现内存警告 4- 5s 80M
释放暂时不用的资源(图片、数组)
didReceiveMemoryWarning类似dealloc的操作了
View属性懒加载
viewDidUnload方法已经不再使用(苹果放弃)
35、面向对象的三大特征,并作简单的介绍
答:封装,继承,多态
继承:为了解决重复的问题
封装:体现面向对象的思想,面向接口的编程,只需要知道外面实现就可以,
多态:方便外界使用 addSubview能把子类当成父类指针来用,
36、重写一个NSStrng类型的,retain方式声明name属性的setter和getter方法
答:
37、简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?
答:KVC不是设计模式
NotificationCenter 通知中心 单例  由通知中心发送,(注册-【添加观察者-target-action(@selector)-name(观察的属性)-object(谁发送通知:被观察的对象)】-userInfo) 不用的时候移除观察者
KVC key-value-code 键值编码
keyPath
setValueForUndefineKey间接赋值
KVO key-value-obbziver(记得移除观察者)发现属性变化立即通知
一旦有新的数据 reloadData
Delegate 是V和C的通讯,
target—action 只是一个方法
这里所用的方法的中心目的是解耦合(降低耦合度)
38、What is lazy loading?
答:
39、什么是Protocol?什么是代理?写一个委托的interface?委托的property声明用什么属性?为什么?
答:protocol协议
40、分别描述类目(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在实现中有何区别?为什么Category只能为对象添加方法,却不能添加成员变量?
答:协议就是一堆方法的声明,有接收方法的对象实现,
分类:categories(类目,又叫非正式协议),添加空实现,子类需要使用时,重写方法
categories 提供分类,没有源代码,可以动态生成成员变量,但是比较麻烦
41、Objective-C有私有方法么?私有变量呢?如多没有的话,有没有什么代替的方法?
答:
42、#import、#include和@class有什么区别
答:#import 条件编译,第一次引入有效后面重复引入时无效
#include拷贝过来
@class 解决循环引入的问题,
43、谈谈你对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗?
答:如何通讯,互相通讯关系
44、如监测系统键盘的弹出
答:
45、举出5个以上你所熟悉的ios  sdk库有哪些和第三方库有哪些?
答:mapkit avfoudisistemconfig
46、如何将产品进行多语言发布?
答:国际化和本地化47、如何将敏感字变成**
答:
48、objc中的减号与加号代表什么?
答:
49、单例目的是什么,并写出一个?
答:
50、说说响应链
答:顺序 (点击某个按钮) 应用程序——window——遍历子视图——根视图控制器——查找子视图——确定是哪个点击——反向查找(先看自己是否有反应 没有找控制器 再没有找父视图)——直到有反应(或者知道放弃动作)倒序
51、我们说的OC是动态运行时语言是什么意思?什么是动态识别,动态绑定?
答:动态运行语言:通过变量ISA识别类型,扩展性强
动态运行需要很多判定,编译量很多,运行较慢
52、分别描述内存管理要点、autorelease、release、NSAutoreleasePool?并说明autorelease是什么时候被release的?简述什么时候由你负责释放对象,什么时候不由你释放?[NSAutoreleasePool release] 和[NSAutoreleasePool drain]有什么区别
答:
53、说说下面关键词在内存管理的作用:alloc、init、copy、retain、release、autorelease、dealloc、retaincount?
答:
54、drawRect和layoutSubviews的区别
答:drawRect画图时使用,重写这个方法,绘制东西时使用     需要手动调用时要setNeedsDisplay来实现
layoutSubview 当视图的bounds发生变化时,会运行layoutSubview    需要手动调用时要setNeedsLayout来实现55、http和scoket通信的区别?socket连接相关库,TCP,UDP的区别?
答:http超文本传输协议, 应用层的协议(它是最顶层的协议)
socet 套接字 TCP/UDP来支持,两个通讯方的连接
TCP trans Controller prot  全双工(互相通信,且同时) ,建立连接(三次握手(1——2 2——1 1——2 ))断开(四次握手(1——2 2——1 1——2 2——1))  面向连接一直不断UDP 传输控制协议 不需要握手连接 (用户数据报协议) 丢包 (qq原来UDP,后来TCP)
双工(互相通信不同时)
56、什么是键-值,键路径是什么
答:key-path 路径(可以一直通过“.”调用)     KeyValuesCodeing
57、声明一个静态方法和一个实例方法?
答:
58、什么是push?远程推送?
答:远程推送  removet
推送通知(省电) 远程唤醒来实现功能的  客户端C
服务端S APNS(苹果推送通知服务)中转作用
如何区分设备:
客户端向APNS注册需要使用远程推送服务
APNS接受注册 给客户端分配唯一编号,dives_token(令牌)(64位编码)
APNS给全体发送时使用for循环发送,
服务器向APNS只能发送json字符串和角标(长度不超过255)有两种  测试版和发布版  两个使用的是不同的地址
(不同的APNS)59、init和initwithobject区别(语法)?
答:带不带参数
60、请写出代码,用blocks来取代上例中的protocol,并比较两种方法的优势。实际应用部分?请写出代码,用blocks取代协议或回调方法
答:
61、你做iphone开发时候,有哪些传值方式,view和view之间是如何传值的?
答:view间传值
62、给定的一个字符串,判断字符串中是否还有png,有就删除它?
答:
63、对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?
答:
64、OC中是所有对象间的交互是如何实现的?
答:【recevier message】 对象 ——方法
65、目标-动作机制
答:
66、for(int index = 0; index < largenumber; index ++){
NSString *tempStr = @”tempStr”;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?
答:
67、描述上拉加载、下拉刷新的实现机制?
答:操作时的事情
请求数据 清空数据 重新装数据
数据拼接
68、什么是沙盒(sandbox)?沙盒包含哪些文件,描述每个文件的使用场景。如何获取这些文件的路径?如何获取应用程序包中文件的路径?
答:
69、介绍一下XMPP?有什么优缺点吗?
答:
70、谈谈对性能优化的看法,如何做?
答:CPU 内存 显卡 降低使用率   即时释放 懒加载
定位用完后关闭 蓝牙用完后关闭
程序后台运行使用推送通知
渲染 减少次数 (减少显卡使用)
tableview重用
71、应用程序如何省电?
答:使用推送
72、Core Animation这个框架的作用
答:动画    UIView动画的底层是core animation
73、ios播放音频文件有几种方式?请大致写出每种方式的主要代码?
答:
74、写出关键代码:AVAudioPlayer如何播放、暂停音乐文件及读取ipod库中的音乐文件?
答:play
MP
75、地图定位用到哪些系统框架?简述每个框架的作用以及对应的关键代码
答:
76、iOS6之后如何获取本机通讯录中的内容(用到哪些框架)?如何对通讯进行增、删、修改?(如果不记得具体代码,请写出关键类和方法)。
答:AddressBook AddressBookUI  在里面创建控制器
77、如何实现调用系统接口实现发送短信/邮件/打电话 ?
答:
78、不使用继承,给UIButton添加一个便利构造器的初始化方法
答:categroy类目
79、写一个递归方法:计算N的阶乘,然后将计算结果进行存储。以便应用退出后下次启动课直接获取该值。
答:
80、NSArray和NSMutableArray的区别,多线程操作哪个更安全?
答:不可变安全 NSArray
81、当前有一个数组,里面有若干重复的数据,如何去除重复的数据?(会几个写几个)
答:
82、isKindOfClass、isMemberOfClass作用分别是什么?
答
83、写出下面程序段的输出结果
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a string value" forKey:@"akey"];
NSLog(@"%@", [dict objectForKey:@"akey"]);
[dict release];
答
84、请写出以下代码的执行结果
NSString  * name = [ [ NSString alloc] init ];
name = @”Habb”;
[ name  release];
答:
85、请分别写出SEL、id的意思?
答:
86、iPhone上,不能被应用程序直接调用的系统程序是什么?
答:
87、以.mm为拓展名的文件里,可以包含的代码有哪些?c和obj-c如何混用
答:C OC C++
文件改为 .m
c语言的文件后缀为.c
88、说说如何进行后台运行程序?
答:UIApplication     managingBackground Execution打开plist文件  添加键值对
beginbackgroundtaskwithname:(只持续10分钟)
endBackgroundTask   告诉系统结束要像系统申请
89、sizeof和strlen的区别和联系
答:sizerof 计算变量(类型)占几个字节
strlen 占内存长度
90、sprintf,strcpy,memcpy的功能?使用上要有哪些要注意的地方
答:sprintf    将本来在控制太重打印的文字写入到文件中
strcpy 字符串
memcpy 内存拷贝
91、自己写函数,实现strlen功能
答:
92、写一个代码片段输入一个字符串“20130322152832”,输出一个NSDate类型的对象,打印该对象输出2013-03-22 15:28:32
答
93、找错误
a:void test1()
{char string[10];char* str1 = "0123456789";strcpy( string, str1 );
}
b:void GetMemory( char **p, int num )
{*p = (char *) malloc( num );
}
void Test( void )
{char *str = NULL;GetMemory( &str, 100 );strcpy( str, "hello" ); printf( str );
}
答:
94、用变量a写出以下定义a、一个整型数     int ab、一个指向整型数的指针  int *ac、一个指向指针的指针,它指向的指针是指向一个整型数 int **ad、一个有10个整型数的数组  int  a[10]e、一个有10个指针的数组,该指针是指向一个整型数的int *a[10]f、一个指向有10个整型数数组的指针int (*a)[10]g、一个指向函数的指针,该函数有一个整型参数,并返回一个整型数int(*a)(int)x-code5 做出兼容6的程序x-code设置中下载最新的模拟器GCD开了多线程
告诉系统需要异步执行时,系统自动开辟线程怎么判断多线中的哪一个
block中 【nsthread 】主线程的编号是1 其他的是2.......</span>

iOS常遇面试题及答案相关推荐

  1. 《招聘一个靠谱的iOS》面试题参考答案(下)

    参考: <招聘一个靠谱的iOS>面试题参考答案(下) <招聘一个靠谱的iOS> 25 _objc_msgForward函数是做什么的,直接调用它将会发生什么? _objc_ms ...

  2. 《招聘一个靠谱的iOS》面试题参考答案

    说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>下面是我对这个面试题的解答 本人iOS github:https://github.com/netyou ...

  3. 2021年,整理的iOS高频面试题及答案(总会有你需要的)

    推荐阅读:关于iOS面试题汇总(栏目持续更新) 各位最近应该忙于跳槽与面试吧,毕竟金三银四,珍惜好机会,预祝大家面试顺利通过,迎接大厂offer.有需要资料可以私聊我了解 从输入url到页面展示到底发 ...

  4. 网上搜集的一些iOS的面试题以及答案

    并非原创,都是我搜集的,我觉得够全了,面试题基本逃不出这些范围 nsmutableCopy 和 copy的区别 1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承, ...

  5. iOS经典面试题总结--内存管理

    内存管理 1.什么是ARC? ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release.在对象被创建时retain count+1 ...

  6. ①(语法篇)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)

    iOS面试题 一共分为笔试题和面试题两部分 笔试题 一共分为10个 总共613题 面试题 一共400题 笔试题 一个10个系列 分别为 ①(语法篇) 共147题 已更新 ②(常识篇) 共72题 已更新 ...

  7. ⑪(面试篇 2/3)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)

    iOS面试题 一共分为笔试题和面试题两部分 笔试题 一共分为10个 总共613题 面试题 一共400题 笔试题 一个10个系列 分别为 ①(语法篇) 共147题 已更新 ②(常识篇) 共72题 已更新 ...

  8. 2018年1月iOS招人心得(附面试题)- 答案整理

    2018年1月iOS招人心得(附面试题)- 答案整理 基础不牢,地动山摇. 面试问的大多都是开发所必备的基础知识,通过面试题整理自己的技术栈是一个非常不错的途径. 这套面试题可作为开发同仁的一份复习提 ...

  9. 史上最全的iOS面试题及答案

    史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...

  10. 2019最新iOS面试题及答案

    1. Object-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-C的类不可以多重继承;可以实现多个接口,通过实现 ...

最新文章

  1. 【Java】浅析八种基本类型和包装类型
  2. OpenCV3学习(9.2)连通域分析函数详解connectedComponents()和connectedComponentsWithStats()
  3. SAP License:SAP 销售成本会计VS期间会计
  4. 程序编译过程与软件启动过程
  5. JD_Source Code for problem 1259
  6. 月薪没过3W,肯定是没关注这几位大佬的公众号
  7. 住建部印发《全国建筑设计周期定额》——建设和设计单位“不得压缩”设计周期...
  8. 基因分型分析之全外显子组分析
  9. 学习记录657@python计算股价的回撤与收盘价回撤率组合图实现
  10. 【简易爬虫】找回B站“已失效视频”的相关信息
  11. 读书笔记 | 张五常 经济解释 (卷一) 科学说需求
  12. UVALive-6528 Disjoint water supply
  13. Linux GccGcc-c++安装
  14. osg demo14 漫游
  15. _stdcall和_cdec区别
  16. 嵌入式系统工程化设计4
  17. 论文阅读——《动态规划》 作者 方奇
  18. 阿里云大数据分析师ACP认证 视频教程
  19. 作品集一(早期共17件ps)
  20. EditPlus苦战 dynamic的API

热门文章

  1. 云端Docker搭建ABY库以及本地CLion使用
  2. JavaScript - 数据类型的判断方法汇总
  3. eMMC的发展历史及未来市场前景
  4. 毕业设计 基于51单片机的晾衣架控制系统的设计
  5. 生活捕捉者 — 手机应用IN
  6. lg_pod_plugin解决 pod instal慢的问题
  7. 论文阅读Ask Me Anything: Free-form Visual Question Answering Based on Knowledge from External Sources
  8. 在Vantiq平台里利用asFullResponse标识使SELECT返回更多的信息
  9. 业余爱好-自动化股票量化交易
  10. python中args和kwargs的用法_Python中*args 和 **kwargs的用法总结