iOS 面试题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS 面试题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1677字,纯文字阅读大概需要3分钟。
内容图文
int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));
上面代码输出结果是:2,5
sizeof:是一个运算符,类型结果为size_t,在头文件中typedef为unsigned int,值通常在编译时计算好,参数类型可以是数组、指针、类型、对象,函数等。注意对齐问题,要以最长类型计算,得出占用字节的大小。
strlen:是一个函数,只能用char*做参数,且必须是以\0结尾,在运行时才能得出结果,返回的是字符的实际长度。
strcpy:函数只用于字符串的拷贝,源字符与目标字符在拷贝时长度不满足拷贝都会导致地址混乱,两字符串重叠则结果混乱,遇到结束符\0则终止拷贝。
strncpy:同strcpy,且可自定义拷贝长度,但结果不包含\0,需自己加结束符。
sprintf:函数操作的对象不限于字符串,源对象可以是任意基本类型的数据,主要实现将其他数据类型转换为字符串,遇到结束符停止拷贝。
memcpy:实现将一块内存拷贝到另一块内存,没有类型限制,可指定长度,但同样要注意越界,重叠等问题。
C和C++中的struct有什么不同?和C++的class呢?
C的struct没有权限设置,没有成员函数,没有构造函数,虚构函数等等,是用户自定义的数据类型(UDT)
C++的struct是抽象数据类型(ADT),支持成员函数的定义,几乎与class一致,区别是struct的成员默认是public,class中默认是private的;在用模版的时候只能写template <class Type>或template <typename Type>不能写template <struct Type>;
此外,如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同!简单的说就是,存取class的data member和非virtual function效率和struct完全相同!不管该data member是定义在基类还是派生类的。 如果不是为了和C兼容,C++中就不会有struct关键字。
因此建议是:如果不需要与C兼容或传递参数给C程序,不要在C++中用struct。
不用变量实现两个数字交换的代码如下:
a = a ^ b; b = a ^ b; a = a ^ b;
IBOutlet的属性设置为weak是为什么呢?
IBOutlet连接的属性,相当于创建了一个对象,添加到当前VC的View中,view对添加到它上面的控件是强引用的,我们在VC中仅是对其使用,并没有必要拥有它,所以是weak的。将weak改成strong也没问题,当VC释放,则该控件引用计数器会自动减1,紧接着VC的View释放,该控件引用计数器继续减1,并不会造成循环引用。
ARC中属性关键字
atomic,nonatomic,readwrite,readonly,strong,weak,assign,copy,retain,unsafe_unretained,geter=<name>,setter=<name>
默认属性有readwrite,atomic,strong(对象),assgin(基本数据类型)
@synthesize指令高数编译器在编译期间产生getter和setter方法
@dynamic指令告诉编译器在编译期间不自动生成getter和setter方法,主要用于NSManageObject对象的属性声明中
__weak与__block的区别
__block可修饰对象和基本数据类型,被修饰对象可在block中重新赋值,适用于ARC和MRC
__weak只能修饰对象,可避免循环引用,适用于ARC
原文:http://www.cnblogs.com/nmzd/p/5723406.html
内容总结
以上是互联网集市为您收集整理的iOS 面试题全部内容,希望文章能够帮你解决iOS 面试题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。