希望读者带着批评的眼光,别误导了您!本人才疏学浅,略做记录,您有更好答案,请您指教!
1. 如何实现应用第一次启动时的使用向导?
这个可以理解为每次版本高更新时,第一次打开首先显示的应该是引导画面。
在AppDelegate.m文件中实现判断
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//在此处判断是否为新版本是否为第一次登陆
//如果是第一次登陆,将rootViewController设置为引导控制器
self.window.rootViewController = NewFeatureController;
}
2. 如何实现一个自定义视图,给定一个NSArray的坐标点数组,在视图上显示对应的曲线。
相关知识: 绘制 文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
CGContextRef:Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.
需要重写:- (void)drawRect:(CGRect)rect 方法。
附上文章一篇 写的非常好!
3. 如何为一个TextField控件加入自定义的边框?
1.重写一个文本将
2.简单的方法:
self.background = [UIImage imageNamed:@"searchbar_textfield_background"];
其他的一些属性
设置边框样式
[textField setBorderStyle:UITextBorderStyleNone];
设置边框颜色
textField.layer.borderColor = [[UIColor redColor]CGColor];
//设置UITextField的文字颜色
tf.textColor=[UIColor redColor];
//设置UITextField的文本框背景颜色
tf.backgroundColor=[UIColor grayColor];
//设置UITextField的边框的风格
tf.borderStyle=UITextBorderStyleRoundedRect;
//设置UITextField的代理
tf.delegate=self;
//设置UITextField的文字对齐方式
tf.textAlignment=UITextAlignmentCenter;//居中对齐
tf.textAlignment=UITextAlignmentLeft;//左对齐
tf.textAlignment=UITextAlignmentRight;//右对齐
tf.textAlignment=UITextAlignmentFill;//填充对齐
//设置UITextField的文字大小和字体
tf.font=[UIFont fontWithName:@"Times New Roman" size:20];
//设置UITextField自适应文本框大小
tf.adjustsFontSizeToFitWidth=YES/NO;//自适应宽度
tf.adjustsFontSizeToFitHeight=YES/NO;//自适应高度
//设置UITextField是否拥有一键清除的功能
tf.clearsOnBeginEditing=YES/NO;
//设置一键清除按钮是否出现
tf.clearButtonMode=UITextFieldViewModeNever;
//设置UITextField的初始隐藏文字
tf.placeholder=@"输入密码";
//当UITextField的样式为UITextBorderStyleNone的时候,修改背景图片
tf.background=[UIImage imageNamed:@"xx.png"];
//设置UITextField的左边view
tf.leftView=xxx;
//设置UITextField的左边view出现模式
tf.leftViewMode=UITextFieldViewModeAlways;
//设置UITextField的右边view
tf.rightView=xxx;
//设置UITextField的右边view出现模式
tf.rightViewMode=UITextFieldViewModeAlways;
//设置UITextField的字的摆设方式
tf.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
4. 分析给出某个页面界面的实现方式?注意屏幕旋转等的处理。
这里解答一下屏幕旋转的问题吧!
如何获取:
1.注册UIDeviceOrientationDidChangeNotification通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientChange:)name:UIDeviceOrientationDidChangeNotification object:nil];
- (void)orientChange:(NSNotification *)noti
{
NSDictionary* ntfDict = [noti userInfo];
UIDeviceOrientation orient = [UIDevice currentDevice].orientation;
/*
UIDeviceOrientationUnknown,
UIDeviceOrientationPortrait, // Device oriented vertically, home button on the bottom
UIDeviceOrientationPortraitUpsideDown, // Device oriented vertically, home button on the top
UIDeviceOrientationLandscapeLeft, // Device oriented horizontally, home button on the right
UIDeviceOrientationLandscapeRight, // Device oriented horizontally, home button on the left
UIDeviceOrientationFaceUp, // Device oriented flat, face up
UIDeviceOrientationFaceDown // Device oriented flat, face down */
switch (orient)
{
case UIDeviceOrientationPortrait:
break;
case UIDeviceOrientationLandscapeLeft:
break;
case UIDeviceOrientationPortraitUpsideDown:
break;
case UIDeviceOrientationLandscapeRight:
break;
default:
break;
}
}
2.注册UIApplicationDidChangeStatusBarOrientationNotification通知,以来stausBar
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:)name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
- (void)statusBarOrientationChange:(NSNotification *)notification
{
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeRight) // home键靠右
{
//
}
if (
orientation ==UIInterfaceOrientationLandscapeLeft) // home键靠左
{
//
}
if (orientation == UIInterfaceOrientationPortrait)
{
//
}
if (orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//
}
}
5. 如何同时为iPad和iPhone做屏幕适配?
AutoLayout,sizeClass
开源框架:Masonry
6. 继承和协议、category是怎么回事?可以同其他语言做类比吗(比如Java或C++)?类似[a b]的消息调用,运行时是如何确定b的?
继承是继承的子类拥有父类的方法和属性
private:私有成员,不能被子类继承;
protected:保护成员,可以被子类继承;
public:公有成员,可以被外部函数访问,也可以被子类继承。
可以重写父类方法
协议是Delegate:只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。例如一个view向另一个view传值。
Category是分类:是为了扩展已有类的新的行为。例如给NSString添加生成时间戳的方法。
7. 代码块(block)是怎么回事?代码块是对象吗?要如何理解呢?
8. 使用过NSThread吗?要如何使用?GCD是怎么回事?
NSThread和GCD都是多线程。
GCD 是一个替代诸如 NSThread 等技术的很高效和强大的技术,利用GCD可以实现多线程。
例如利用GCD多线程可以解决页面UI与网络下载的阻塞问题(UITableviewCell)。
9. 怎么编写库?进行组件/代码复用的库有何注意事项?如何使用C/C++开发的库?有何注意事项?
在分享一篇文章他们写的比我写的好。
10.Socket是否使用过?TCP和UDP区别是什么?单播、组播、广播分别是什么?
区别
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用“点对点通信”(Point to Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。
2.多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。 IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。Windows 2000中的DHCP管理器支持多播IP地址的自动分配。
3.广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。 广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。 在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。
11. http POST和GET的差异?http和https有何不同?
Get:相对不安全 , 参数在url后面,传输长度小
Post:相对安全,参数在请求体中,传输的长度相比较长
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
在ios9中,要求使用https协议。但也可以不适用。
12. 是否使用过自动化测试框架?介绍一下。
什么是证书,有哪些种类?如何做app签名?如何进行testflight发布测试?
证书是开发者购买的测试和发布应用程序的签名文件。
有个人开发者证书($99)和企业开发证书($299)
在苹果开发整中心生成相关p12文件进行测试和发布应用程序。
14. Svn里的conflict是怎么回事?如何处理?
多人协作时,修改同一句或一段代码,更新或提交时会造成冲突。可以对冲突进行合并。删除冲突,重新提交。