1.传值的方法?
答: ①属性传值。通常用于正向传值,使用于A和B相互具有一定的关联性。不能用于隔页传值,需要传值的属性不能是私有属性,也就是说在.h中声明出来的属性才可以传值。
②Block传值。常用于回调,例如B有一个按钮,当按钮被点击时把点击事件传传给A,并传一个字符串"B被点了"。
③代理传值。代理传值和block传值相似,都是将事件分发出去。但是与block的不同在于,代理具有松耦合性,谁想处理事件成为该代理即可。代理传值属于一对一传值。
④通知中心传值。通知传值属于一对多,在实际开发中,常见用到的通知地方就是更换主题。在某个控制器发生事件,其他已存在的控制器作出响应。这里注意一点,是已存在。
⑤单例传值。iOS系统中常间的单例模式莫过于UIApplication、 NSNotificationCenter、 NSUserDefaults。
⑥全局变量传值。在某个文件的.m文件创建一个全局变量,其他文件只要引用该变量,即可对该变量值进行修改和使用。需要注意,变量名要保证全局唯一。
⑦数据库传值、NSFileManager
2.侧边栏的实现?
答:使用MMDrawerController框架或者RESideMenu框架。
3.搜索栏实现?
答:使用系统UISearchBar 或者自定义搜索框。
4.Block的运用?
答:block在其他语言里又称闭包,可以叫匿名函数,代码块。一句话概括就是 带有变量的匿名函数。
block的两大常见用法分别是 反向传值、回调,和封装一些网络请求类,通过block作为方法的参数,比如UIview带block的那个动画。
5.数据存储的方式有哪些?
答:
数据:sqlite 操作方式分为原生 sqlite3、FMDB、coredata
归档:Archive 自定义类型需要注意遵循NSCoding协议
plist:就是数组或字典,写入文件后的表现形式
NSUserDefault:本质上就是plist
6.简单说说ARC?
答:Automatic Reference Counting,自动引用计数,即ARC。arc是由Xcode自动在app编译阶段在代码中添加内存管理代码。如果需要持有一个对象,那么对其发送retain 如果之后不再使用该对象,那么需要对其发送release(或者autorealse) 每一次对retain,alloc或者new的调用,需要对应一次release或autorealse调用。
7.一个lable添加在view上,但运行显示不了是什么问题?
答:考虑问题如下
1.没有设置尺寸
2.控件的颜色可能跟父控件的背景色一样(实际上已经显示了)
3.透明度alpha <=0.01 看不见
4.hidden = YES;
5.位置不对
6.设置时没有放到主线程
8.什么是委托?
委托(delegate),就是某个对象指定另一个对象处理某些特定任务的设计模式。通俗来说,就是“某个对象”把要做的事情委托给“另一个对象”去做。
委托模式:代理+协议 的组合,实现一对一的反向传值操作。
1.委托需要做的工作有:
1.1定义协议与方法
1.2声明委托变量
1.3设置代理
1.4通过委托变量调用委托方法
2.代理需要做的工作有:
2.1遵循协议
2.2实现委托方法
9.说说delegate和block的优缺点?
答:
block 更轻型,使用更简单。使用block实现委托模式,其优点是回调的block代码块定义在委托对象函数内部,使代码更为紧凑,适配对象不再需要实现具体某个protocol,代码更为简洁。但block会常造成循环引用,这点需要注意。
delegate 需要实现接口,它的方法分离开来,很多时候需要存储一些临时数据,另外相关的代码会被分离到各处,没有 block 好读。但通常被weak引用,不会造成内存泄漏。
10.造成tableView卡顿的原因是什么?
答:cell重用。
TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果,又能充分节约内容的目的。下面简要分析一下它的实现原理。
11.weak和strong的区别?
答:
强引用Strong:strong修饰的属性一般不会自动释放; 在OC中,对象默认是强指针,在实际开放中一般属性对象一般用strong来修饰(NSArray,NSDictionary),在使用懒加载定义控件的时候,一般也用strong。
弱引用Weak: weak型的指针变量仍然可以指向一个对象,但不属于对象的拥有者。
谁持有,谁strong;谁借用,谁weak!
网友评论