ios面试题(三)
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:
在应用中可以创建多少autorelease对象,是否有限制?
答案:无
如果我们不创建内存池,是否有内存池提供给我们?
答案:界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池
什么时候需要在程序中创建内存池?
答案:用户自己创建的数据线程,则需要创建该线程的内存池
答案:见iOS面试题(一)
什么是简便构造方法?
答案:简便构造方法一般由CocoaTouch框架提供,如NSNumber的 + numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt:
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 做过的项目是否涉及网络访问功能,使用什么对象完成网络功能?
4 简单介绍下NSURLConnection类及+ sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?
答案: NSURLConnection主要用于网络访问,其中+ sendSynchronousRequest:returningResponse:error:是同步访问数据,即当前线程会阻塞,并等待request的返回的response,而– initWithRequest:delegate:使用的是异步加载,当其完成网络访问后,会通过delegate回到主线程,并其委托的对象。
1 多线程是什么
最新文章
- python的应该关注的语法
- Returns: range-based (not absolute) index within the current range
- js实现图片向上播放(轮番滚动)
- Python基础学习笔记(八)常用字典内置函数和方法
- 用Google Analytics跟踪JavaScript Errors (译)
- docker 查看容器详细
- 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网
- CSS3影子 box-shadow使用和技巧总结
- ECMAScript6之String类型的扩展
- 浅谈 var 关键字
- EXCEL技能之数据去重
- Lua学习之加载其他lua文件
- Java 实现 AES 加解密
- ajax请求本地文件
- 利用Junit实现eclipse单元测试
- 01 workerman之GatewayWorker框架简单使用
- 【Fanvas技术解密】HTML5 canvas实现脏区重绘
- html中label及加上属性for之后的用法
- servlet中请求转发(forword)和重定向(redirect)的区别
- html <;br/>;引起的”血案“
热门文章
- 2014-7-7 NOIP模拟赛(图论)
- IT兄弟连 JavaWeb教程 EL与JSTL表达式经典案例
- 花花的森林(倍增,LCA
- hadoop HA集群搭建(亲测)
- 子div块中设置margin-top时影响父div块位置的解决办法及其原因
- android videoView 加载等待
- Verify the Developer App certificate for youraccount is trusted on your device
- Codeforces 1136E(转化+线段树维护)
- Ubuntu安装指定版本的docker
- 转 错误:ORA-28002/ORA-65162 : the password will expire within 7 days 解决方法