1.谈谈你做过的项目;
2.项目中最有成就感的部分;
3.倒计时如何实现?(NSTimer,还有其他的实现方式吗);
方法1:使用NSTimer来实现
主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下:
secondsCountDown = 60;//60秒倒计时
countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];
-(void)timeFireMethod{
secondsCountDown--;
if(secondsCountDown==0){
[countDownTimer invalidate];
}
}
方法2:使用GCD来实现
代码如下:
__block int timeout=300; //倒计时时间
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
if(timeout<=0){ //倒计时结束,关闭
dispatch_source_cancel(_timer);
dispatch_release(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示 根据自己需求设置
。。。。。。。。
});
}else{
int minutes = timeout / 60;
int seconds = timeout % 60;
NSString *strTime = [NSString stringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes, seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示 根据自己需求设置
。。。。。。。。
});
timeout--;
}
});
dispatch_resume(_timer);
4.UIButton的继承关系?
UIButton的父类是UIControl,UIControl的父类是UIView,UIView的父类是UIResponder,UIResponder父类是NSObject;
5.iOS中可以进行输入的控件?
(UITextView,UITextField);
6.快排的实现原理;
“快速排序法”使用的是递归原理,下面我结合一个例子来说明“快速排序法”的原理。首先给出一个数组{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53,80,72,63,98},这样一个数组的排序就变成了两个小数组的排序--53左边的数组和53右边的数组,而这两个数组继续用同样的方式继续下去,一直到顺序完全正确。
7.短信验证码会有倒计时功能吗?第一次验证失败后还可以再进行验证吗?
有倒计时功能,一般情况下,验证码在倒计时的周期内无法再次获取验证码,倒计时结束后可以再次请求接收验证码,一般会将这个包含倒计时功能的button进行封装。
8.Android开发和iOS开发的区别;
Android是开源,使用的语言是java语言。
ios是封闭,不是开源,使用的语言是oc语言。
开发上来说android设备多,要考虑适配。ios由于设备有限所以适配几乎无需考虑,兼容性非常好。
相同点:都是面向对象编程,开发的应用效果一样,功能都可以实现。
9.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?
1.,归档啊,动态添加属性啊,头文件:#import <objc/runtime.h>
方法名称:
// 1.获得类中的所有成员变量
Ivar*ivarList =class_copyIvarList([selfclass], &count);
//2.获得方法的名字的字符串
NSSelectorFromString(_cmd)
//3.发送消息函数
objc_msgSend()