1.#import和#include、@class有什么区别?#import<>和#import“”又有什么区别?

答:1.#import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次;

  2.@class仅仅是声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题;

  3.#import<>用来包含系统自带的文件,#import“”用来包含自定义的文件。

2.属性readwrite、readonly、assign、retain、copy、nonatomic、atomic、strong、weak各是什么作用?在哪种情况下使用?

  1.readwrite:同时生成get方法和set方法的声明和实现;这个属性会被当成读写的,是默认属性;

  2.readonly:只生成get方法的声明和实现;是只读的,在@implementation中,只需要一个读取器。如果你试图使用点操作符为属性赋值,将得到一个编译错误。

  3.assign:set方法的实现是直接赋值,用于基本数据类型,不更改索引计数。在使用垃圾收集的应用程序中,如果一个属性使用assign,且这个类符合NSCopying协议,则要明确指出这个标记,而不是简单地使用默认值,否则的话,将得到一个编译警告。(这再次向编译器说明你确实需要赋值,即使它是可拷贝的。??没看懂)

  4.retain:set方法的实现是release旧值,retain新值,用于OC对象。而不能用于Core Foundation对象(因为Core Foundation对象没有引用计数)

eg:

-(void)setName:(NSString *)name{
if (_name != name) {
[_name release];
_name = [name retain];
}
}

  5.copy:set方法的实现是release旧值,copy新值,用于NSString、block等类型。

-(void)setName:(NSString *)name{
if (_name != name) {
[_name release];
_name = [name copy];
}
}

*******copy和retain的区别*******

  copy是建立了一个相同的对象,而retain不是。

  比如一个NSString对象,地址为Ox000111,内容为"name"

  copy到另外一个NSString之后,地址为0x000222,内容相同,新的对象的retain为1,旧的对象没有变化;

  retain到另外一个NSString之后,地址相同,为0x000111,内容也相同,旧的对象的retain值+1;

********end**************

 6.nonatomic:非原子性,set方法的实现不加锁,比atomic的性能高,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。

 7.atomic:原子性,设置成员变量的@property属性时,默认为atomic,提供多线程安全。setter函数会变成下面的:

-(void)setName:(NSString *)name{

    {lock}

    if (_name != name) {

        [_name release];

        _name = [name retain];

    }

    {unlock}

} 

nonatomic禁止多线程,变量保护,提高性能。

atomic是Objc使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误,是非常耗费资源的。如果没有使用多线程的通讯编程,则nonatomic是不错的选择。如果不指定nonatomic,在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,如果指定了nonatomic,那么访问器只是简单地返回这个值。

  8.strong:和retain一样,在使用时,引用计数也会加一。当所有指向它的strong类型都释放时,它会被释放,所有指向它的weak类型,都会被清空。

  9.weak,弱引用,当循环引用时,使用weak。当weak指针指向的对象一被释放,这些weak指针将被置为nil,有效地防止了野指针。同时weak不增加引用计数。

未完待续--

iOS面试题01的更多相关文章

  1. iOS笔试题01

    1. #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1> #import和#include都能完整地包 ...

  2. 最全的iOS面试题及答案-转载

    1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现 ...

  3. IOS面试题总结

    iOS面试题: 一:网络理论知识的理解 1:Internet物理地址和IP地址转换采用什么协议 ARP(Address Resolution Protocol)地址解析协议 2:Internet采用哪 ...

  4. iOS面试题及答案2015.6.7

    iOS面试题及答案     1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承 ...

  5. iOS 面试题 总结

    #include <iostream> using namespace std; int main () { char p[]={'a','b','c'}, q[]="abc&q ...

  6. [转载]iOS面试题总

    转载自:http://blog.sina.com.cn/s/blog_67eb608b0101r6xb.html (2014-06-13 20:23:33) 转载▼ 标签: 转载   crash 原文 ...

  7. 试答卓同学的 iOS 面试题

    卓同学昨天写了一篇文章<4道过滤菜鸟的iOS面试题>.我手痒决定默写一个参考答案.后来发现不认真回答被大家喷成狗,所以决定积极改造,重新做人.下面就是修编之后的答案. 1. struct和 ...

  8. iOS面试题大全-点亮你iOS技能树

    所有的内容大部分来自于网络的搜集,所以我不是一个创造者,而是一个搬运工.我尽量把题目,尤其是参考答案的出处列明.若有任何疑问,建议,意见,请联系我. 第一部分面试题来源于iOS-Developer-I ...

  9. 原 iOS面试题收集

    原 iOS面试题收集 发表于2年前(2013-07-22 13:47)   阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...

随机推荐

  1. 【BZOJ】3196: Tyvj 1730 二逼平衡树(区间第k小+树套树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3196 Treap+树状数组 1WA1A,好伤心,本来是可以直接1A的,这次开始我并没有看题解,就写出 ...

  2. jsoup httpclient 爬取网页并下载google图标

    jsoup下载地址 http://www.jsoup.org httpclient下载地址 http://hc.apache.org/downloads.cgi 其他jar包见附件 Crawler p ...

  3. JavaScript 导出Excel 代码

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  4. v.size() return size_t not int 返回无符号整型数

    In the C++ STL, the vector size() function return size_t, which is unsigned int, not int. So imagine ...

  5. php phpeclipse + xampp 配置安装过程

    就想test是否能配置成功,下载apache,php5.3,安装开始 apache的安装,一路next,遇到Server Information,随便填写即可,安装路径自己可选 php的安装,将下载的 ...

  6. 微博开发平台java SDK demo学习之examples(demo)

    本文介绍demo中函数的功能分块 账号 评论 收藏 关系/好友分组 地理信息 OAuth2(开发指南) 位置服务(开发指南)

  7. 微博java SDK介绍及使用说明

    转自:作者:新浪微博 开放平台 @MUNTO_AKIRA http://open.weibo.com/blog/%E5%BE%AE%E5%8D%9Ajava-sdk%E4%BB%8B%E7%BB%8D ...

  8. bin/bash 和 /bin/sh 的区别

    今天在用ssh Secure shell 连接虚拟机中的Ubuntu编写程序时,想比对一下两个源代码有什么差别,但是在一个ssh 客户端下不断的切换很是费劲.于是想着在主机中再添加一个用户.我原本用s ...

  9. Jenkins学习记录

    参考资料 官方文档 用MSBuild和Jenkins搭建持续集成环境(1) 用MSBuild和Jenkins搭建持续集成环境(2) 构建基于Jenkins + Github的持续集成环境 Jenkin ...

  10. linphone3.4.0代码分析

    主要类型定义: 1.LinphoneCoreVTable /** * This structure holds all callbacks that the application should im ...