时尚意

1、堆和栈什么区别?

答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。

2、数组和链表什么区别?

答:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。

链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。

3、delegate和notification什么区别,什么情况使用?

答:Delegate:
        消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然然后发送者响应事件,

delegate机制使得接收者可以改变发送者的行为。

通常发送者和接收者的关系是直接的一对多的关系。

Notification:
      消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。

通常发送者和接收者的关系是间接的多对多关系。

4、什么是MVC,为什么使用MVC,有什么好处?

答: 分别为: 模型(Model),视图(View)和控制Controller)。

模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。

“模型”有对数据直接访问的权力,例如对数据库的访问。

视图(View) 视图层能够实现数据有目的显示。

控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。

5、从一个数组中找出重复的元素打印出来

NSArray *arr = [NSArrayarrayWithObjects:@"1",@"2",@"1",@"7",@"4",@"5",@"2",@"6",@"5",nil];

NSMutableArray *arrmu = [[NSMutableArrayalloc]init];//过滤

NSMutableArray *sameArray = [[NSMutableArrayalloc]init];//找出相同的

for (int i = 0 ; i < [arrcount]; i++) {

id str = [arr objectAtIndex:i];

if ([arrmu count] == 0)

{

[arrmuaddObject:str];

}

else{

BOOL flag = NO;

for (int j = 0; j < [arrmucount]; j++ ) {

if ([strisEqual:[arrmu objectAtIndex:j]])

{

[sameArrayaddObject:str];

flag =YES;

break;

}

else{

flag =NO;

}

}

if (flag == NO) {

[ arrmuaddObject:str];

}

}

}

NSLog(@"sameArray : %@",sameArray);

还有两种直接找出的方法,上代码:

一:

NSArray *arr = [NSArrayarrayWithObjects:@"1",@"2",@"1",nil];

NSSet *set = [NSSetsetWithArray:arr];

NSLog(@"%@",[setallObjects]);

二:

NSArray *arr =@[@1,@2,@1];

NSMutableDictionary *dict = [NSMutableDictionarydictionary];

for (NSNumber *numberin arr) {

[dictsetObject:numberforKey:number];

}

NSLog(@"%@",[dictallValues]);

6、UITableView能否绑定多个数据源?

答:不能

7、一个UIViewController能否管理多个UITableView ?

答:可以

8、ios4、5、6相对于之前的版本添加了哪些新特性?
  这个就比较多了,比如:抛弃谷歌地图 新推Maps应用 ,大幅加强中国本地化支持,Siri开口讲普通话,通过iCloud体验分享乐趣,Passbook电子票券管理,随时随地的FaceTime,电话功能增强,Safari支持全屏浏览,Mail应用新增VIP,万能辅助:更强大等等了

9、同步请求和异步请求什么区别?

答:发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,

异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行。

10、iOS中的多线程操作、多线程方式

答:iOS提供了方便的多线程调用机制:NSOperation和NSOperationQueue。它的使用方法也很简单,

一般都是将NSOperation对象加入到NSOperationQueue队列中,加入后队列就开始处理,知道任务操作完成。

11、UIViewController的生命周期

答:当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
      // 视图显示在屏幕上的顺序

1、 alloc                    创建对象,分配空间。

2、init (initWithNibName)    初始化对象,初始化数据。

3、loadView                   从nib载入视图, 这一步不需要去干涉。除非没有使用xib文件创建视图。

4、viewDidLoad                加载完毕,可以进行自定义数据以及动态创建其他控件。

5、viewWillAppear             视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。

6、viewDidAppear              视图已在屏幕上渲染完成。

// 视图将被从屏幕上移除的顺序

1、viewWillDisappear          视图将被从屏幕上移除之前执行。

2、viewDidDisappear           视图已经被从屏幕上移除。

3、dealloc                    视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。

4、viewDidUnload              出现内存警告在内存不足时执行,并对所有非当前显示的controller执行。

本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。

因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。

12、Autorerelease对象什么时候释放?

答:autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。

13、iOS数据持久化方式

答:四种:属性列表、对象归档、SQLite3和Core Data

14、Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答:Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

15. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import”"又什么区别?

答:#import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使 用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系 统的头文件,#import””用来包含用户头文件。

16.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?

答:readwrite 是可读可写特性;需要生成getter方法和setter方法时

readonly 是只读特性  只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变

assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;

retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;

copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时。

nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic

17.常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int

答:object-c的数据类型有 NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是class,创建后便是对象,而C语言的基本数据类型int,只是一定字节的内存空间,用于存放数值;而object-c的NSNumber包含有父类NSObject的方法和 NSNumber自己的方法,可以完成复杂的操作。

18.Objective-C如何对内存管理的,说说你的看法和解决方法?

答:Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。

解决方法的话: 谁持有,谁释放。

19.如何对iOS设备进行性能测试?

答:Profile-> Instruments ->Time Profiler

20.Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?

答:线程创建有三种方法:使用NSThread创建、使用 GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是 performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:

21.描述一下iOS SDK中如何实现MVC的开发模式

答:MVC是:模型--视图--控制  开发模式,对于iOS SDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。

22.定义属性时,什么情况使用copy、assign、retain?

答:assign用于简单数据类型,如NSInteger,double,bool, 其实还有后面的block等;

retain和copy用于对象,copy用于当a指向一个对象,b也想指向同样的对象的时候,如果用assign,a如果释放,再调用b会crash,如果用copy 的方式,a和b各自有自己的内存,  就可以解决这个问题。

retain 会使计数器加一,也可以解决assign的问题。

另外:atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。

加了atomic,setter函数会变成下面这样:

if (property != newValue) {

[property release];

property = [newValue retain];

}

23. Object-C有私有方法吗?私有变量呢?

答:objective-c – 类里面的方法只有两种, 静态方法和实例方法,所有实例变量默认都是私有的,所有实例方法默认都是公有的。

24.浅拷贝和深拷贝区别是什么

 答:浅拷贝:只复制指向对象的指针,而不复制引用对象本身。        ?深拷贝:复制引用对象本身。

25.自动释放池是什么,如何工作

答: 当您向一个对象发送一个autorelease消息时,Cocoa就会将该对 象的一个引用放入到最新的自动释放池。

它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,

自动释放池就会被释放,池中的所有对象也就被释放。

26.单件实例是什么

答: Foundation 和 Application Kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。

举例:NSFileManager 和NSWorkspace类在使用时都是基于进程进行单件对象的实例化。

当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配 和初始化。

27.类别的作用?继承和类别在实现中有何区别?
 答:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。?

并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。?类别主要有3个作用:

?(1)将类的实现分散到多个不同文件或多个不同框架中。?

(2)创建对私有方法的前向引用。

?(3)向对象添加非正式协议。?

继承可以增加,修改或者删除方法,并且可以增加属性。

28.类别和类扩展的区别。
 答:category和extensions的不同在于 后者可以添加属性。另外后者添加的方法是必须要实现的。?extensions可以认为是一个私有的Category。

29.KVO and KVC??
 答:kvc:键 - 值编码是一种间接访问对象的属性,使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制。?很多情况下可以简化程序代码。apple文档其实给了一个很好的例子。?kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码。?具体用看到用到过的一个地方是对于按钮点击变化状态的的监控。?比如我自定义的一个button?[cpp]

?[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; ? ?

?#pragma mark KVO ?

?- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context ?{

?    if ([keyPath isEqualToString:@"highlighted"] ) { ?

[self setNeedsDisplay]; ?

}

}

对于系统是根据keypath去取的到相应的值发生改变,理论上来说是和kvc机制的道理是一样的。?对于kvc机制如何通过key寻找到value:?“当通过KVC调用对象时,比如:[self valueForKey:@”someKey”]时,程序会自动试图通过几种不同的方式解析这个调用。首先查找对象是否带有 someKey 这个方法,如果没找到,会继续查找对象是否带有someKey这个实例变量(iVar),如果还没有找到,程序会继续试图调用

-(id) valueForUndefinedKey:这个方法。如果这个方法还是没有被实现的话,程序会抛出一个NSUndefinedKeyException异常错误。?

?(cocoachina.com注:Key-Value Coding查找方法的时候,不仅仅会查找someKey这个方法,还会查找getsomeKey这个方法,前面加一个get,或者_someKey以及_getsomeKey这几种形式。同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。)? ?设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法从对象中请求值时,对象能够在错误发生前,有最后的机会响应这个请求。这样做有很多好处,下面的两个例子说明了这样做的好处。“?来至cocoa,这个说法应该挺有道理。

?因为我们知道button却是存在一个highlighted实例变量.因此为何上面我们只是add一个相关的keypath就行了,

?可以按照kvc查找的逻辑理解,就说的过去了。

30.代理的作用?
 答:代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度。?另外一点,代理可以理解为java中的回调监听机制的一种类似。

31.说说响应链?
答: 事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播。

32.frame和bounds有什么不同??
答:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)?bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)

33.方法和选择器有何不同??
答:selector是一个方法的名字,method是一个组合体。

34.Object-c的类可以多重继承么?可以实现多个接口么?重写一个类的方式用继承好还是分类好?为什么?
答:Objective-c只支持单继承,如果要实现多继承的话,可以通过类别和协议的方式来实现,cocoa 中所有的类都是NSObject 的子类,多继承在这里是用protocol 委托代理 来实现的。

35.ARC自动引用技术

答:1.ARC是编译特性,不是运行时特性,只是在编译的时候,编译器会自动加上释放代码
    2.不能调用release、retain、autorelease、retainCount
    3.dealloc注意
     1> 不能在dealloc中调用[super dealloc]
     2> 不能在dealloc中释放资源
   [email protected]参数说明
    1> retain 改为 strong
    2> 基本数据类型(int\float)还是用assign
    3> copy 还是 copy
    4> 如果2个对象循环引用,一端用strong,一端用weak
    5> weak是用在对象上,weak其实作用跟assign相当
    5.ARC中只允许使用通过@autoreleasepool {}创建自动释放池

36 GCD技术

答:Grand Central Dispatch简称GCD 解决多核并行运算的一种方案

看代码就行:

//  Grand Central Dispatch简称GCD技术

// Do any additional setup after loading the view.

//    dispatch_queue_t newDispath = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//    dispatch_async(newDispath, ^{

//        [self downloadImage];

//    });

//    #defineDISPATCH_QUEUE_PRIORITY_HIGH  2

//    #defineDISPATCH_QUEUE_PRIORITY_DEFAULT  0

//    #defineDISPATCH_QUEUE_PRIORITY_LOW (-2)

//    #defineDISPATCH_QUEUE_PRIORITY_BACKGROUNDINT16_MIN

/*dispatch queue分为下面三种:

* Serial:又称为private dispatch queues,同时只执行一个任务。Serial queue通常用于同步访问特定的资源或数据。当你创建多   个        Serial queue时,虽然它们各自是同步执行的,但Serial queue与Serial queue之间是并发执行的。

* Concurrent: 又称为global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。

* Main dispatch queue它是全局可用的serial queue,它是在应用程序主线程上执行任务的

*/

//  一般GCD 可以如下操作

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

// 耗时的操作

dispatch_async(dispatch_get_main_queue(), ^{

// 更新界面

});

});

[selfexampleDispatch];

/*

*系统给每一个应用程序提供了三个concurrent dispatch queues。

*这三个并发调度队列是全局的,它们只有优先级的不同。

*因为是全局的,我们不需要去创建。我们只需要通过使用函数dispath_get_global_queue去得到队列

*/

dispatch_queue_t globalQ =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

NSLog(@"global:%p",globalQ);

dispatch_queue_t mainQ =dispatch_get_main_queue();

NSLog(@"mainQ:%p",mainQ);

/*

*虽然dispatch queue是引用计数的对象,但是以上两个都是全局的队列,不用retain或release。

*/

/*

*dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。

*这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了。

*/

timeInt = 0;

[NSTimerscheduledTimerWithTimeInterval:1

target:self

selector:@selector(checkingTime)

userInfo:nil

repeats:YES];

[selfexampleDispath_group];

/*dispatch_barrier_async的使用

*dispatch_barrier_async是在前面的任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行

*/

[selfexampleDispatch_barrier];

/*dispatch_apply

*执行某个代码片段N次。

*/

dispatch_apply(5, globalQ, ^(size_t index) {

// 执行5次

});

转载链接忘记了。在此感谢原作者

时间: 2024-10-05 15:22:37

时尚意的相关文章

Fort.js – 时尚、现代的表单填写进度提示效果

Fort.js 是一款用于时尚.现代的表单填写进度提示效果的 JavaScript 库,你需要做的就是添加表单,剩下的任务就交给 Fort.js 算法了,使用非常简单.提供了Default.Gradient.Sections 以及 Flash 四种效果,满足开发的各种场合需要. 您可能感兴趣的相关文章 太赞了!超炫的页面切换动画效果[附源码下载] 创意无限!一组网页边栏过渡动画[附源码下载] 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 时尚设

穆斯林女性是时尚绝缘体?你OUT了!

穆斯林世界一年一度的盛事又要到了! 看标题,小编肯定是要说说穆斯林的时尚大趋势,不过这之前,先看最重要的大促日期! 从5月27日到6月26日,整个斋月期间,Lazada印尼站和马来西亚站将会持续推出一系列斋月大促活动,卖家们记得跟着下图的报名时间提交产品哦: 我们为什么如此看重斋月促销? 小编去年也介绍过"斋月"的基本信息,想必大多数小伙伴对这个穆斯林新年已不陌生.(更多背景,点时光穿梭机) 根据 Pew Research Center 的最新数据,2010 至 2050 年,穆斯林人

时尚衣美网提醒-个性与原则穿出自己的个性

个性原则指社交场合树立个人形象的要求.人人希望自己以一个独立的人被社会接纳与承认,而服饰打扮可以帮助你达到这个目标. 要使打扮富有个性应注意两个问题,第一就是不要盲目赶时髦,最时髦的往往是最没有生命力的.第二就是穿出自己的个性.俗话说,世间没有两片完全相同的叶子,一样米养百样人.不同的人由于年龄.性格.职业.文化素养等不同,自然就会有不同的气质,故服饰选择应符合个人气质要求,既要符合个人气质,同时通过服饰更表现个性气质.为此,必须深入了解自我,让服装尽显自己的个性风采.一个盲目追求时髦的人必然会

百万用户时尚分享网站feed系统扩展实践

Fashiolista是一个在线的时尚交流网站,用户可以在上面建立自己的档案,和他人分享自己的以及在浏览网页时看到的时尚物品.目前,Fashiolista的用户来自于全球100多个国家,用户达百万级,每日分享的时尚物品超过500万.作为一个以社交.分享的网站,feed系统占据了网站的核心架构,Fashiolista的创始人兼CTO Thierry Schellenbach撰写了一篇博客,分享了自家网站feed系统建设的经验,译文如下: Fashiolista最初是我们作为兴趣在业余时间开发的一个

为了【眼睛】拼了,意康绿全场钜惠,关注微信买一送一!~

您是否是电脑控.手机党.熬夜族.驾驶队的一员,也同样饱受环境污染.强力紫外线和各种辐射的困扰,模糊了清澈的心窗,渐失明察秋毫的锐利!!那么问题来了,有没有一种既健康又轻松的解决方法呢? 梦想还是要有的,万一实现了呢?机会就在眼前,不试试怎么知道?再犹豫,超值优惠就木有啦~~ 送爸妈?送亲人?送朋友?黑醋栗复合固体饮品拥有独一无二的神奇功效,保护您的心灵之窗!微信公众号搜索意康绿

Valentino发布2013秋冬高级定制系列_菁华时尚生活,时尚生活电子杂志,Fine Born China

Valentino发布2013秋冬高级定制系列_菁华时尚生活,时尚生活电子杂志,Fine Born China alentino发布2013秋冬高级定制系列 编辑: Mavis 图源于网络 图源于网络       发表时间:2013-07-09 09:28 具传奇色彩的时装大师 Valentino Garavani 于1959年创立了Valentino(华伦天奴),其后不断扩大业务,目前在 70 多个国家设有逾 1,250 个销售点,其中 66 家由公司直接管理经营.Valentino(华伦天奴

传z播客 刘意_2015年Java基础视频笔记(day18~)(2016年3月7日00:25:16)

day18 1.Map引入 Map是区分于Collection的另外一个"老大" 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢? 如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称. 但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗? 针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 

14款超时尚的HTML5时钟动画

时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助. 1.可爱的CSS3圆盘时钟动画 今天要分享的也是一款可爱的CSS3圆盘时钟动画,时钟背景是乳白色的,显得非常干净,另外,时钟也可以和你本地的时候保持同步. 在线演示 源码下载 2.HTML5 SVG圆盘时钟动画 5种时钟样式 今天我

裁缝店私人定制 风生水起 紧跟时尚

"爱上原品"上线主打设计师原创_科技_腾讯网 "爱上原品"上线主打设计师原创 2011年11月16日01:58北京商报魏蔚我要评论(0) 字号:T|T 记者近日获悉,设计师原创时装网站"爱上原品"已正式上线开卖,该网站以设计师原创时装为主营产品,一经推出就吸引了国内外众多合作厂商的关注与加盟. 据了解,"爱上原品"在今年9月15日就已面向公众开放注册,并推出注册会员即赠送百元消费券等一系列活动.据内部人士透露,该网站开通首日注