iPhone经典面试题 本文档涵盖了iOS和iPhone开发中常见的一些面试题和答案,涵盖了C语言、Objective-C语言、iOS开发等方面的知识点。 一、指针运算 在C语言中,指针运算是非常重要的一部分。例如,在上面的代码中,`int *ptr=(int *)(&a+1);`这里的`(&a+1)`是什么意思?实际上,`a`是一个数组指针,其类型为`int (*)[5]`,而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。`a`是长度为5的`int`数组指针,所以要加`5*sizeof(int)`,以使`ptr`实际是`&(a[5])`。但是`ptr`与`(&a+1)`类型是不一样的,这点非常重要。所以`ptr-1`只会减去`sizeof(int*)`。 二、sizeof运算符 在C语言中,`sizeof`运算符是用来获取变量或数据类型的大小的。例如,在上面的代码中,`sizeof(str)`和`sizeof(p)`都是4。这是因为在32位系统中,指针的大小为4字节。 三、NSString的内存管理 在Objective-C语言中,`NSString`的内存管理是非常重要的一部分。例如,在上面的代码中,`NSString *output=@"This is a main test\n";`这里的`output`的内存是如何管理的?实际上,在函数返回后,`output`的内存已经被释放了。 四、宏定义 在C语言中,宏定义是用来定义常量的。例如,在上面的代码中,`#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL`这里定义了一个常量`SECONDS_PER_YEAR`,表示一年中有多少秒。 五、委托模式 在Objective-C语言中,委托模式是非常重要的一部分。例如,在上面的代码中,`@protocol MyDelegate;`和`@interface MyClass: NSObject{ id <MyDelegate> delegate; }`这里定义了一个委托协议`MyDelegate`,并在`MyClass`中实现了该协议。 六、NSString的实现 在Objective-C语言中,`NSString`的实现是非常重要的一部分。例如,在上面的代码中,`+ (id) stringWithCString: (const char*)nullTerminatedCString encoding: (NSStringEncoding)encoding`这里实现了一个`NSString`的工厂方法。 七、多继承 在Objective-C语言中,多继承是通过协议委托来实现的。例如,在上面的代码中,所有的类都是`NSObject`的子类,通过协议委托来实现多继承。 八、私有方法和私有变量 在Objective-C语言中,私有方法和私有变量是非常重要的一部分。例如,在上面的代码中,所有实例变量默认都是受保护的,所有实例方法默认都是公开的。
剩余14页未读,继续阅读
- 粉丝: 5
- 资源: 71
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助