活到老学到老:iOS开发中的基础知识(一)
本文参考 标哥的博客:宝库iOS开发笔试题 进行学习整理。与其说是看面试题,不如说是对自己知识的巩固。工欲善其事必先利其器,基础知识不牢固可能会导致编程中的一些注意不到的问题。总之一句话:活到老,学到老。
1.数组中的元素去重问题。
//重复元素
NSArray *array = [NSArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",nil]; NSMutableArray *marray = [NSMutableArray arrayWithCapacity:array.count]; //比较笨的方法 遍历循环
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (![marray containsObject:obj]) {
[marray addObject:obj];
}
}];
NSLog(@"%@",marray); //通过 KVC 的这个 distinctUnionOfObjects.self 去重,不过顺序会乱
// array = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
// NSLog(@"%@",array);
//
// //没有顺序,通过dictionary去重
// NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:array.count];
// [array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
// [dict setValue:obj forKey:obj];
// }];
// NSArray *newArray = dict.allValues;
// NSLog(@"%@",newArray);
// //排序
// newArray = [newArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
// NSString *item1 = obj1;
// NSString *item2 = obj2;
// return [item1 compare:item2 options:NSLiteralSearch];
// }];
// NSLog(@"%@",newArray);
//
// //利用NSSet 无顺序
// NSSet *set = [NSSet setWithArray:array];
// NSArray *newArray = [set allObjects];
// NSLog(@"%@",newArray);
//
//
// //利用NSOrderSet,直接排序了
// NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithArray:array];
// NSArray *newArray = orderSet.array;
// NSLog(@"%@",newArray);
2.NSArray、NSSet、NSDictionary与NSMutableArray、NSMutableSet、NSMutableDictionary 的特性和作用
3.日期格式化的问题
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//设置date格式
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *strDate = [formatter stringFromDate:date];
//NSDate *date1 = [formatter dateFromString:strDate];
NSLog(@"%@",strDate);
4.在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么?
(1)HTML5 页面更新的时候不需要重新发布,只需要更新服务器的页面就可以了。
(2)HTML5 页面嵌套在 WKWebView 里面 使用,原生App可以和HTML5里面的元素互相调用
(3)HTML5 页面显示不如App流畅。
5.描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。
6.plist文件是用来做什么的。一般用它来处理一些什么方面的问题。
Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,比如保存一些死数据,城市,商品类别之类的东西。不需要经常从服务器更新。
7.请简单写出增、删、改、查的SQL语句。
对于经常做CURD的我,这个就比较简单了。 就是 select ,insert,update,delete 几个关键字,当然SQL还有很多更加复杂的操作。
(1)SELECT * FROM TABLE_NAME WHERE EXPRESSION
(2)INSERT INTO TABLE_NAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1,VALUE2,VALUE3)
(3)UPDATE TABLE_NAME SET FIELD1=VALUE1,FIELD2=VALUE2 WHERE EXPRESSION
(4)DELETE FROM TABLE_NAME WHERE EXPRESSION
8.请写出UIViewController的完整生命周期
sub loadView
sub viewDidLoad
main viewWillDisappear
sub viewWillAppear
sub viewDidAppear
main viewDidDisappear
sub viewWillDisappear
main viewWillAppear
main viewDidAppear
sub viewDidDisappear
sub dealloc
9.请写出有多少有方法给UIImageView添加圆角?
10.请描述事件响应者链的工作原理
11.如何避免使用block时发生循环引用
常用的方法有将self改为弱引用 __weak typeof(self) *weakSelf = self;或者添加 __unsafe_unretained修饰。 然后在block里面使用weakSelf 。
还有如果要在block里面改外边的值,需要加__block 修饰 或者将变量设置为static
12.请比较GCD与NSOperation的异同
13.请写出NSTimer使用时的注意事项(两项即可)
- NSTimer在UITableViewCell中使用是,需要将timer加到runLoop中。
countDownTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(countDown:) userInfo:nil repeats:YES];
NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop];
[currentRunLoop addTimer:countDownTimer forMode:NSRunLoopCommonModes];
- 同一个timer在重复使用之前必需invalidate, 否则会造成之前的timer无法停掉,两个timer同时存在。导致的现象就是timer同时更新两次。
14.说说Core Animation是如何开始和结束动画的
15.iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式?
- 偏好设置 NSUserDefaults
- plist文件
- Core Data
- SqlLite
- 归档
活到老学到老:iOS开发中的基础知识(一)的更多相关文章
- IOS科研IOS开发笔记学习基础知识
这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollVi ...
- iOS开发中多线程基础
耗时操作演练 代码演练 编写耗时方法 - (void)longOperation { for (int i = 0; i < 10000; ++i) { NSLog(@"%@ %d&q ...
- 微信小程序之组件开发中的基础知识
跟着视频开始小程序的项目的开发,视频中这个小程序已经上线了,可以很好的看着小程序的界面进行开发,昨天看了一下具体的需求,觉得真的细节好多啊,而且其中设计的组件的思想也是很好的,能够很好的实现代码的复用 ...
- iOS开发学习概述及知识整理
设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...
- iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
- iOS开发中你是否遇到这些经验问题
前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...
- 简述 Ruby 与 DSL 在 iOS 开发中的运用
阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识 何为 DSL DSL(Domain Specific Language) 翻译成中文就是:"领域特定语言".首先,从定义就 ...
- 白话 Ruby 与 DSL 以及在 iOS 开发中的运用
每日一篇优秀博文 2017年10月7日 周六 白话 Ruby 与 DSL 以及在 iOS 开发中的运用 阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识 何为 DSL DSL(Domain S ...
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
随机推荐
- Linux私房菜阅读笔记
在线man:http://www.linux.com/linux-man-pages 计算机硬件五大单元: 1.输入 2.输出 3.控制单元 4.算数逻辑单元 5.内存 CPU种类 1.RISC( ...
- HashMap的结构算法及代码分析
HashMap算是日常开发中最长用的类之一了,我们应该了解它的结构跟算法: 参考文章: http://blog.csdn.net/vking_wang/article/details/14166593 ...
- 用js(JavaScript-jQuery)解析XML文件 无法成功 获得XML对象,字符串一些心得
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html 解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有 ...
- C#的split()分割字符串
简单的说: 在C#中 str.Split("===="); //这样是错误的,只能 str.Split('=');//参数只能是char类型的,不能是字符串的 如果非得要以字符串分 ...
- Object 公共方法详解
在C#中,所有类型最终都从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法.具体地说,System.Object提供了一组公共实例方法. 一.Equals 如果两个对象具 ...
- [转]Load ASP.NET MVC Partial Views Dynamically Using jQuery
本文转自:http://www.binaryintellect.net/articles/218ca630-ba50-48fe-af6e-6f754b5894aa.aspx Most of the t ...
- java实现截取6个汉字字母数字
项目中使用到需要截取6个字(12个字母或数字),解决方法如下: /** * * @方法名称:getWordCount * @内容摘要: <截取输入字符串 大于6个后显示...> * @pa ...
- js 获取时间相关
$(document).ready(function () { var date = new Date(); var sb = ""; ...
- 学习安卓开发过程中遇到关于R.Java文件的问题
在学习安卓开发过程时,遇到R.java生成问题,总结几个方法解决. 1.首先必须做的就是检查代码的正确性,存在错误的代码,不编译生成R.java 2.右键点项目,选择 Android Tools -& ...
- bootstrap fileinput+MVC 上传多文件,保存
新增用户资料,需要用户上传多笔附件,所以就尝试用了fileinput控件,显示效果如图: 首先,先在model中定义数据模型: public partial class create { [Requi ...