iOS 面试集锦2
4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name
- - (void) setName:(NSString*) str
- {
- [str retain];
- [name release];
- name = str;
- }
- - (void)setName:(NSString *)str
- {
- id t = [str copy];
- [name release];
- name = t;
- }
6.常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int
object-c的数据类型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;NSInteger是基本数据类型,并不是NSNumber的子类,当然也不是NSObject的子类。NSInteger是基本数据类型Int或者Long的别名(NSInteger的定义typedef long NSInteger),它的区别在于,NSInteger会根据系统是32位还是64位来决定是本身是int还是Long。
10.如何对iOS设备进行性能测试?
Profile-> Instruments ->Time Profiler
11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什么?
- =======================================================
- NSMutableArray* ary = [[NSMutableArray array] retain];
- NSString *str = [NSString stringWithFormat:@"test"];
- [strretain];
- [aryaddObject:str];
- NSLog(@"%@%d",str,[str retainCount]);
- [strretain];
- [strrelease];
- [strrelease];
- NSLog(@"%@%d",str,[str retainCount]);
- [aryremoveAllObjects];
- NSLog(@"%@%d",str,[str retainCount]);
- =======================================================
str的retainCount创建+1,retain+1,加入数组自动+1
3
retain+1,release-1,release-1
2
数组删除所有对象,所有数组内的对象自动-1
1
12. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:
2.Give us example of what are delegate methods and what are data source methods of uitableview.
给出委托方法的实例,并且说出UITableVIew的Data Source方法
答案:CocoaTouch框架中用到了大量委托,其中UITableViewDelegate就是委托机制的典型应用,是一个典型的使用委托来实现适配器模式,其中UITableViewDelegate协议是目标,tableview是适配器,实现UITableViewDelegate协议,并将自身设置为talbeview的delegate的对象,是被适配器,一般情况下该对象是UITableViewController。
UITableVIew的Data Source方法有- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;
3.How many autorelease you can create in your application? Is there any limit?
在应用中可以创建多少autorelease对象,是否有限制?
答案:无
4.If we don’t create any autorelease pool in our application then is there any autorelease pool already provided to us?
如果我们不创建内存池,是否有内存池提供给我们?
答案:界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池
5.When you will create an autorelease pool in your application?
什么时候需要在程序中创建内存池?
答案:用户自己创建的数据线程,则需要创建该线程的内存池
6.When retain count increase?
什么时候内存计数会增加?
答案:见iOS面试题(一)
7.What are commonly used NSObject class methods?
类NSObject的那些方法经常被使用?
答案:NSObject是Objetive-C的基类,其由NSObject类及一系列协议构成。
其中类方法alloc、class、 description 对象方法init、dealloc、– performSelector:withObject:afterDelay:等经常被使用
8.What is convenience constructor?
什么是简便构造方法?
答案:简便构造方法一般由CocoaTouch框架提供,如NSNumber的 + numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt:
Foundation下大部分类均有简便构造方法,我们可以通过简便构造方法,获得系统给我们创建好的对象,并且不需要手动释放。
9.How to design universal application in Xcode?
如何使用Xcode设计通用应用?
答案:使用MVC模式设计应用,其中Model层完成脱离界面,即在Model层,其是可运行在任何设备上,在controller层,根据iPhone与iPad(独有UISplitViewController)的不同特点选择不同的viewController对象。在View层,可根据现实要求,来设计,其中以xib文件设计时,其设置其为universal。
10.What is keyword atomic in Objective C?
在Objetive-C什么时原子关键字
答案:atomic,nonatomic见iOS面试题(一)
11.What are UIView animations?
UIView的动画效果有那些?
答案:有很多,如 UIViewAnimationOptionCurveEaseInOut UIViewAnimationOptionCurveEaseIn UIViewAnimationOptionCurveEaseOut UIViewAnimationOptionTransitionFlipFromLeft UIViewAnimationOptionTransitionFlipFromRight UIViewAnimationOptionTransitionCurlUpUIViewAnimationOptionTransitionCurlDown
12.How can you store data in iPhone applications?
在iPhone应用中如何保存数据?
答案:有以下几种保存机制:
1.通过web服务,保存在服务器上
2.通过NSCoder固化机制,将对象保存在文件中
3.通过SQlite或CoreData保存在文件数据库中
13.What is coredata?
什么是coredata?
答案:coredata是苹果提供一套数据保存框架,其基于SQlite
14.What is NSManagedObject model?
什么是NSManagedObject模型?
答案:NSManagedObject是NSObject的子类 ,也是coredata的重要组成部分,它是一个通用的类,实现了core data 模型层所需的基本功能,用户可通过子类化NSManagedObject,建立自己的数据模型。
15.What is NSManagedobjectContext?
什么是NSManagedobjectContext?
答案:NSManagedobjectContext对象负责应用和数据库之间的交互。
16.What is predicate?
什么是谓词?
答案:谓词是通过NSPredicate,是通过给定的逻辑条件作为约束条件,完成对数据的筛选。
predicate = [NSPredicate predicateWithFormat:@"customerID == %d",n];
a = [customers filteredArrayUsingPredicate:predicate];
17.What kind of persistence store we can use with coredata?
使用coredata有哪几种持久化存储机制?
答案:无
1 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画?
答案:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令)
- [UIView transitionWithView:self.view
- duration:0.2
- options:UIViewAnimationOptionTransitionFlipFromLeft
- animations:^{ [[blueViewController view] removeFromSuperview]; [[self view] insertSubview:yellowViewController.view atIndex:0]; }
- completion:NULL];
2 写出上面代码的Block的定义。
答案:
typedef void(^animations) (void);
typedef void(^completion) (BOOL finished);
3 试着使用+ beginAnimations:context:以及上述Block的定义,写出一个可以完成
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);操作的函数执行部分
答案:无
网络部分
3 做过的项目是否涉及网络访问功能,使用什么对象完成网络功能?
答案:ASIHTTPRequest与NSURLConnection
4 简单介绍下NSURLConnection类及+ sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?
答案: NSURLConnection主要用于网络访问,其中+ sendSynchronousRequest:returningResponse:error:是同步访问数据,即当前线程会阻塞,并等待request的返回的response,而– initWithRequest:delegate:使用的是异步加载,当其完成网络访问后,会通过delegate回到主线程,并其委托的对象。
iOS 面试集锦2的更多相关文章
- iOS面试集锦3
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- iOS 面试集锦
是第一篇: 1.Difference between shallow copy and deep copy? 浅复制和深复制的区别? 答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身. 深层 ...
- ios面试技术要点
iOS面试 技术总结点(可参考):多线程 运行时 runloop app框架 几种动画编程 jsonmodel原理 sdwebimage原理 masonry怎么应用及原理 应用框架有哪些 说一下Fac ...
- iOS 面试基础题目
转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...
- iOS面试贴士
iOS面试小贴士 ———————————————回答好下面的足够了------------------------------------- 多线程.特别是NSOperation 和 GCD 的内部原 ...
- IOS面试攻略
IOS面试攻略(1.0) 2013-10-13 20:58:09| 分类: IOS面试 | 标签:ios知识点总汇 ios面试 |举报|字号 订阅 来自:伊甸网 @ 看到这个关键字,我 ...
- C C++ OC iOS面试重点问题(一)
C C++ OC iOS面试重点问题(一) 1.字符串常量需要加\0 2.逻辑运算 位操作(经典:实现两个数的交换) 3.关键字 4.引用和指针的区别和联系 5.如何引用一个已经定义过的全局变量? ...
- IOS面试问题总结
IOS面试问题总结 分类: IOS开发2013-11-20 17:26 10458人阅读 评论(1) 收藏 举报 目录(?)[+] 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题 ...
- 十个iOS面试问题
十个iOS面试问题 十个iOS面试问题.不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会. ...
随机推荐
- 3DMAX 6 游戏特效制作
3d主要是粒子系统为主,一个特效可能包含多个粒子系统,需要注意粒子系统尽量减少多余参数,材质shader在手机上要经过优化 另外可以使用面片加脚本实现滚动效果,比如瀑布等等 具体方法以后补充,占位
- windows 系统 GitBook生成PDF、epub报错Error during ebook generation: 'ebook-convert' 乱码
解决方法 1. 根据你的系统下载calibre并安装 2. 右键属性打开桌面图标位置 3 .复制该路径: 4. 打开我的电脑-属性-系统-高级系统设置-环境变量,配置环境. 5. 编辑"PA ...
- Apache与Tomcat的区别和联系
经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总 ...
- tensorflow:实战Google深度学习框架第四章01损失函数
深度学习:两个重要特性:多层和非线性 线性模型:任意线性模型的组合都是线性模型,只通过线性变换任意层的全连接神经网络与单层神经网络没有区别. 激活函数:能够实现去线性化(神经元的输出通过一个非线性函数 ...
- GCC在windows下的配置
http://blog.csdn.net/lan120576664/article/details/46806991 http://blog.csdn.net/shaynerain/article/d ...
- JS脚本不能执行
这段时间在做前端的动态页面,出了很多问题,因为js平时用的很少,所以花了不少无用功. 其中有两点一定要注意: 1.当js中有语法错误时,js脚本会无法执行. 2.当js脚本中有未定义的变量时,后边的语 ...
- MYSQL5.7.11安装问题
今天下午在笔记本上安装MySQL软件.一开始下载的是最新版5.7.20-winx64.到了安装环节,各种报错,先是缺少什么DLL120,好吧,找到资源补丁下载,放到系统文件夹.以为OK了.再尝试,这次 ...
- spring boot使用AbstractXlsView导出excel
一.maven依赖jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi ...
- gin 打linux环境包问题解决
打window包直接go build一下,完事, 但是,打linux包出现如下错误 ..\github.com\mattn\go-isatty\isatty_linux.go:7:8: cannot ...
- Less的学习和使用
官网 http://less.bootcss.com/usage/ 在线编译器 http://tool.oschina.net/less