iOS笔试题

本文深入解析iOS应用开发中的内存管理机制,包括栈区、堆区、数据区和代码区的作用;详细解释引用与指针的区别;阐述`UIApplicationMain`方法的用途及参数含义;提供保存变量到本地的两种方法;展示如何快速定位并修改特定UIButton的属性;探讨类方法与实例方法的区别;解释对象实例化后的释放机制;分析UIWebView加载数据的协议及数据格式;介绍传输图片的HTTP和FTP协议;比较OC中加号与减号方法的用法;推荐iOS开发中使用的两个基本框架;强调UITableView重新加载数据的方法;展示委托机制的实现方式;讨论OC多重继承的缺失及替代方案;解释#import和#include的区别;阐述self与name赋值的区别;最后提供创建UITableView实例的关键语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 程序在内存中运行时,内存分几个区?各自用途?
答:
栈区 由编译器自动分配释放存放函数的参数值,局部变量的值等。在高级语言中不需要显式的分配和释放 
堆区 一般由程序员手动分配释放,如果不释放可有由OS释放。
数据区 存储全局和静态变量。初始化的全局和静态变量在一块区域,未初始化的放在相邻的一块区域,程序结束后由系统释放。
代码区 存放函数体的二进制代码。

2 引用与指针有什么区别?
引用是给变量起一个别名 也就是一个变量有两个名字 他们是同一块空间
指针是分配一块内存用来保存变量的地址 间接引用变量

3.int retVal = UIApplicationMain(argc, argv, nil, nil); 是什么意思?
对UIApplication对象进行了初始化,这个方法除了argc 和 argv 参数外,另外这个函数还有2个两个字符串参数来识别UIApplication类和UIApplication代理类,在这里默认是2个nil,第一个参数为nil就默认把UIApplication类作为缺省值进行初始化,可以在这里不填nil而是使用自己定义的UIApplication子类。至于第二个参数nil就设置为nil就把模板生成的HelloWorldAppdelegate类作为默认值。
4. 保存一个变量到本地,列举两个简单的方法
答 
直接写入writeToFile 支持NSString NSArray NSDictionary
实现NSCoding NSCopy 协议

5.如果UIView *view 已经实例化 在view 仅添加了N个UIButton类的实例,这些button不是全局的,并且button已经用tag区分开,如何快速找出其中指定的一个button改变它的某个属性?
答 [view subViewsWithtag: ];

6. 当A类中的某个方法执行到某处时, 这时想在B类中执行某个方法,如何做,举出一个方法说明?
答 在A类初始化一个B类的成员就可以调用B类的方法

7.下面代码中obj2是否需要dealloc?
ClassA *obj1 = [[ClassA alloc] init];
ClassA *obj2 = obj1;
[obj1 hello];  //输出hello
[obj1 de];
[obj2 hello];  //程序能否执行到这一行? 
[obj2 dealloc];
答 不需要 他和obj2指向的是同一块空间

8.类方法创造的对象要不要用release释放?
答 不需要 这个对象被放到自动释放池中

9.下面请求数据用了什么协议,请求的数据格式是什么?
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:http://pzpromop.s3.amazonaws.com/PromoNeutral.html]]];
[self.view addSubview:webView];

10.想传输一张图片,可以用什么协议传输?http ftp,

11.OC中加号方法与减号的区别?
加号方法是类方法 属于静态方法
减号方法是实例 必须由类的实例来调用

12 建一个工程用到最基本的两个框架是什么?
答 cocoa Touch框架  Function框架

13 一个UITableView的实例,重新加载数据的方法是什么?
答 viewDidLoad??reloadData

14 写一个委托的interface
@protocol SimpleProtocol
-(void)doSomething:(NSString *)str;
@end

@interface SimpleClass:NSObject< SimpleProtocol >
{
}
@end

@implementation SimpleClass
-(void) doSomething:(NSString *)str
   NSLog(str);
 } 
@end

15.OC中有没没多重继承? 如果没有用什么方法替代?
答 没有多重继承 可以委托的模型来替代

16. #import和#include的区别 @class
答 防止重复包含 @class类的前置声明 会在下边类的声明中包含某个类的对象

17. self.name = "object"  name = "object"的区别
self.name 需要要合成属性然后系统会默认生成set get方法 所以在赋值是会调用set方法
name = "object"则直接赋值

18. 实例化一个UITableView对象 要求写出关键语句
UITableView *my = [[UITableView alloc] initWithFrame:<#(CGRect)frame#> style:<#(UITableViewStyle)style#>];
    my.delegate = self;
    my.dataSource = self;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值