首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试iOS 机会在自己手中

1.因为父指针可以指向子类对象,使用 copy 目的是为了让本对象属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,本身持有的就是一个不可变副本。...当我们滚动时候,也希望不调度,那就应该使用默认模式。但是,如果希望滚动时,定时器也要回调,那就应该使用common mode。 15. NStimer准吗?谈谈你看法?...方法: 1、主线程中进行NSTimer操作,但是将NSTimer实例加到main runloop特定mode(模式。...默认是不启动,若要启动则需要手动启动; 一个单独线程,如果需要在处理完某个任务后不退出,继续等待接收事件,则需要启用RunLoop; NSRunLoop提供了一个添加NSTimer方法,可以指定...4). viewDidLoad:视图控制器view被加载完成。 5). viewWillAppear:视图控制器view将要显示window上。

52051

编码篇-继承+通知看方法实现和delloc方法调用

1.通知观察者,或KVO观察者 由于通知中心是系统一个单例,你注册通知观察者时,实际上是通知中心注册, 这时,即使ARC下系统帮我们释放了对象,但是通知中心观察还是没有移除,那么当有...该通知时,依然会尝试调用该对象接受通知方法,这可能会导致一些问题. 2.对象强委托 对于其他对象来把你当做委托 delegate时,并且是 强引用时,即时你自身被释放,但是引用你对象依然还在...C语言写一些好内存文件, 4.控制器NSTimer没有被销毁 当viewController存在NSTimer时,需要特别注意,当调用[NSTimer scheduledTimerWithTimeInterval...A一些方法,但是UITableViewCell B方法列表还是会有 那些方法,只是省去了书写而已,书写在了父文件)而且没有被销毁,所以当UITableViewCell A 通知A被触发时...,看似达到了要求,其实在 UITableViewCell中注册通知是很不好方法,这样会造成很多 UITableViewCell 无法被释放,一直在内存使用 多层次Block回调,一样可以达到通知效果

77920
您找到你想要的搜索结果了吗?
是的
没有找到

iOSMVC框架之控制层构建(上)

这种实现机制是一个非常典型模板方法设计模式定义了一个控制器在生命周期内各环节调用方法,您只需要在派生重载这些方法来完成控制器生命周期内各环节所要完成动作或者处理事情。...为了实现这些能力,控制器采用了一种模板方法设计模式来解决这个问题。这里面主要想介绍一下iOS视图控制器为解决这些问题而所做实现。...比如你可以系统提供控制器基础上派生出你自己控制器,然后把这些基也可以单独保存到一个文件夹。 最好不要以每个功能单独建立文件夹来管理。...除了用运算时扩展属性方法外,还可以将共有的方法和属性单独提炼出来让一个辅助来实现,然后派生基初始化方法创建这个辅助,并且后续一些方法都委托给辅助来实现。...上面借助辅助来实现方法可以解决我们派生代码重复问题。上面的方法缺点就是我们派生需要编写很多重复、程式化代码。如何来精简呢?

1.5K20

iOS 常用设计模式汇总

一、MVC模式 MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离方法组织代码,将业务逻辑聚集到一个部件里面,改进和个性化定制界面及用户交互同时,不需要重新编写业务逻辑 1.1实例 MVC...例如,模型对象可能是表示游戏中角色或地址簿联系人。用户视图层中所进行创建或修改数据操作,通过控制器对象传达出去,最终会创建或更新模型对象。...模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应视图对象。 1.1.2视图对象 视图对象是应用程序中用户可以看见对象。...则将该任务存放到协议,由代理完成.但是代理并不会主动执行任务,需要委托通知代理。...kvo,键值对改变通知观察者,平时基本没用过。 四、单例模式 单例模式可以保证App程序运行,一个只有唯一个实例,从而做到节约内存。 整个App程序,这一份资源是共享

1.7K10

《Effective Objective-C》干货三部曲(二):规范篇

但是个别的时候,必须在头文件引入其他头文件: 主要有两种情况: 该类继承于某个,则应该引入父头文件。 该类遵从某个协议,则应该引入该协议头文件。而且最好将协议单独放在一个头文件。...,iOS中分为两种: 普通委托模式:信息从流向委托者 信息源模式:信息从数据源流向 ?...普通委托 | 信息源 就好比tableview告诉它代理(delegate)“被点击了”;而它数据源(data Source)告诉它“你有这些数据”。...最后的话 总的来说这一部分还是比较容易理解,更多只是教我们一些编写OC程序规范,并没有深入讲解技术细节。...而三部曲最后一篇:技巧篇则着重讲解了一些在编写Objective-C代码过程可以使用一些技巧。

78510

《Effective Objective-C》干货三部曲(二):规范篇

但是个别的时候,必须在头文件引入其他头文件: 主要有两种情况: 该类继承于某个,则应该引入父头文件。 该类遵从某个协议,则应该引入该协议头文件。而且最好将协议单独放在一个头文件。...,iOS中分为两种: 普通委托模式:信息从流向委托者 信息源模式:信息从数据源流向 普通委托 | 信息源 就好比tableview告诉它代理(delegate)“被点击了”;而它数据源(...第52条: 别忘了NSTimer会保留其目标对象 使用NSTimer时候,NSTimer会生成指向其使用引用,而其使用者如果也引用了NSTimer,那么就会生成保留环。...最后的话 总的来说这一部分还是比较容易理解,更多只是教我们一些编写OC程序规范,并没有深入讲解技术细节。...而三部曲最后一篇:技巧篇则着重讲解了一些在编写Objective-C代码过程可以使用一些技巧。 ----

88121

《Objective C编程》笔记

方法名,要触发方法方法名。 3.如果在编写程序时,如声明指针时,不知道所指对象准确类型,为此可以使用id类型。...4.obj-c,创见对象最常见途径就是使用alloc和init,通常会将这两个消息写在一行代码,并以嵌套形式连续发送(Apple推荐写法): [[NSDate alloc] init];...14.Apple提供,有些覆盖了isEqual:方法。对于这些,相等(equal)和相同(identical)是两个概念。...如果某个新对象对象是另一个对象委托对象或数据源对象,那么该对象应该在其dealloc方法取消相应关联: (void)dealloc { [windowThatBossesMeAround setDelegate...26.c语言辅助函数,由于不属于函数内任何一部分,故应该在.h位于@interfce之前,.m应该位于import之后,@implement之前插入函数详细实现逻辑。

58330

iOS「回调(callback)」

再看一个NSTimer对象代码: // 一个自定义对象 Logger *logger = [[Logger alloc] init]; // 为NSTimer对象添加回调——Target-action...如果有这个疑问,可以移步到我知乎回答问题:如何用简单明了的话解释一下什么是 Objective-C 委托?或许可以解答你部分疑问。...(不过还没有自己实现过~) 3、Notifications/通告 Notification也可以翻译成「通知」,但是为了不和iOS「本地通知」、「远程通知」这类「通知」混淆,这里将Notification...;然后通告中心会转发通告出去;这时候监测该通告ViewController收到通告后,就会执行相应代码(回调)」。...它其实就是大括号括起来一段代码,只是语法有点「怪异」而已,而且可以作为方法参数进行传递。(Swift,与之对应貌似是「闭包(Closures)」)。

3.3K30

当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。 ---- MVVM,当然三层——M-V-VM。...于是那么多代码写到哪里呢? 答案:MVVM 之外。 ---- 我们代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 程序开发模式而已。...MVVM 只是数据驱动型 GUI 程序建议开发模式;无论是三层哪一层,本质上都是解决 UI 问题。 而非 UI 问题根本就不在 MVVM 讨论之列。...不知看到这里时你会不会喷一脸——“V”解决 UI 问题也就算了,“VM”和“M”算什么 UI! VM,视图模型。其本质是模型。什么模型?“视图模型。这是为真实 UI 做一层抽象模型。...MVVM 模式按此理解后,我们将更能够将代码放到合适位置,避免 VM 代码膨胀: 公共控件或者辅助代码应该抽出来放到别处,比如形成公共组件 一些非 UI 业务功能单独做,独立于 MVVM 模式

85310

读书笔记

如果不行,则把协议单独放在一个头文件,然后将其引入; 有时候在编写头文件时,需要引入某个A(如作为当前某个属性来使用),但是不需要知道这个A实现细节,此时我们不需要直接引入这个A头文件...Copying,否则应该自己去编写深拷贝; 4 协议与分类 4.1 通过委托与数据源协议进行对象通信 委托模式为对象提供了一套接口,使其可由此将相关事件告知其他对象; 将委托对象应该支持接口定义成协议...,协议把可能需要处理事件定义成方法; 当某对象需要从另外一个对象获取数据时,可以使用委托协议。...,每个协议方法对应于该属性一个二进制位;需要注意委托对象与被委托对象之间关系应该是非拥有关系,也就是对应属性得用 weak来修饰; 4.2 将实现代码分散到便于管理数个分类之中 使用分类机制把实现代码划分成易于管理小块...调用者可以等待这组任务执行完毕,也可以提供回调函数之后继续往下执行,这组任务完成时,调用者会得到通知; 6.9 使用 diapatch_once 来执行只需要运行一次线程安全代码 经常需要编写“只需执行一次线程安全代码

46820

iOSMVC框架之控制层构建(下)

不同代码构建时机 控制器是一个功能调度总控室,而且他还通过模板方法设计模式提供给了我们控制器生命周期内各阶段事件发生时处理回调。...更有甚者因为懒加载实现过多代码导致某些地方访问属性时产生了崩溃。 因此不建议对一个控制器里面的所有视图构建都采用懒加载模式视图构建和布局应该在loadView中进行统一处理。...采用分类扩展方法 顾名思义,采用分类扩展方法就是为视图控制器专门建立一个视图构建和布局分类扩展。为了将这部分代码控制器其他代码分离,我们可以将视图构建分类扩展代码单独放到新文件来实现。...因为关于视图构建和布局部分代码都拆分到其他单独地方,而我们控制器主要实现部分就可以专心编写控制逻辑了。...如果我们想完全实践MVCV独立存在并且可以被复用的话,我们可以将视图构建和布局单独抽象到一个视图,并且通过接口定义和消息转发方法来建立控制器视图之间联系。

4.4K30

设计模式是什么?你知道哪些设计模式,请简要叙述?

答案: 设计模式是一种编码经验,就是用比较成熟逻辑去处理某一种类型事情。 1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。 2)....MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。 3). 单例模式:通过static关键词,声明全局变量。整个进程运行期间只会被赋值一次。 4)....观察者模式:KVO是典型观察者模式,观察某个属性状态,状态发生变化时通知观察者。 5). 委托模式:代理+协议组合。实现1对1反向传值操作。 6)....扩展: 软件工程,(引自维基百科)设计模式(design pattern)是对软件设计普遍存在(反复出现)各种问题,所提出解决方案。...设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦紧耦合,以增强软件设计面对并适应变化能力。 使用设计模式目的 为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。

36130

iOS,面试必看,最全梳理

当一个视图控制器被释放时,它内部全局指针会被指向nil。用法“:不管全局变量还是局部变量用_strong描述就行。 局部变量:出了作用域,指针会被置为nil。...它特点是可以被任何使用(实现),但它并不是(这里我们需要注意),自身不会实现这样方法, 而是又其他人来实现协议经常用来实现委托对象(委托设计模式)。...代理作用 代理又叫委托,是一种设计模式,代理是对象与对象之间通信交互,代理解除了对象之间耦合性。 改变或传递控制链。允许一个在某些特定时刻通知到其他,而不需要获取到那些指针。...使用NSTimer写出一个使用block显示(UILabel上)秒表代码 代码紧凑,传值、回调都很方便,省去了写代理很多代码。...示例图2 单例模式理解与使用 单例模式是一种常用设计模式,单例模式是一个系统只有一个实例对象。

1.1K30

【笔记】《HeadFirst设计模式》(2) —— 从模板方法模式到其他

本篇包括8-14章内容,其中14章内容拆成了很多个小点,正好两篇完结这本书笔记。因为书后半部分信息量要密集很多,尽管字数不多,这篇内容还是比较难,耐心看吧。...本篇最后把书结尾连线题写为了容易阅读表格作为最终总结。...用户与视图交互,视图通知控制器 控制器与模型交互,控制器也可能会要求视图做出改变(按钮是否按下) 视图回想模型询问状态,模型发生改变时也会通知视图;有些设计模型改变也会通知控制器 不要把控制器视图混在一起...,因为这样视图就有了两个责任,造成了紧耦合,难以扩展和改变 模型常常使用观察者模式控制器用策略模式视图用组合模式 适配器模式可把新模型适应到旧控制器视图上,或者反之 ?...13 真实世界实践模式 设计模式是某情景Context(不断出现拥有一定重复共性需要应用模式解决情况)下,针对某问题(情景下约束和目标)采取某种解决方案(所追求一个解决问题通用方案

52930

第一章 Web MVC简介 —— 跟开涛学SpringMVC

从图1-1我们还看到,标准MVC模型能主动推数据给视图进行更新(观察者设计模式模型上注册视图,当模型更新时自动更新视图),但在Web开发模型是无法主动推给视图(无法主动更新用户界面),因为...概念差不多了,我们接下来了解下Web端开发发展历程,和使用代码来演示一下Web MVC是如何实现,还有为什么要使用MVC这个模式呢?...图1-4 1.4.1、CGI:(Common Gateway Interface)公共网关接口,一种web服务端使用脚本技术,使用C或Perl语言编写,用于接收web用户请求并处理,最后动态产生响应给用户...本质就是html代码嵌入java代码。JSP最终还是会被编译为Servlet,只不过比纯Servlet开发页面更简单、方便。但表现逻辑、控制逻辑、业务逻辑调用还是混杂。如图1-6 ?...Page Controller(Command):页面控制器/动作/处理器:功能处理代码,收集参数、封装参数到模型,转调业务对象处理模型,返回逻辑视图名交给前端控制器(和具体视图技术解耦),由前端控制器委托给应用控制器选择具体视图来展示

92210

iOS两年前面试题总结,现在你掌握了嘛?

当一个视图控制器被释放时,它内部全局指针会被指向nil。用法“:不管全局变量还是局部变量用_strong描述就行。 局部变量:出了作用域,指针会被置为nil。...它特点是可以被任何使用(实现),但它并不是(这里我们需要注意),自身不会实现这样方法, 而是又其他人来实现协议经常用来实现委托对象(委托设计模式)。...代理作用 代理又叫委托,是一种设计模式,代理是对象与对象之间通信交互,代理解除了对象之间耦合性。 改变或传递控制链。允许一个在某些特定时刻通知到其他,而不需要获取到那些指针。...使用NSTimer写出一个使用block显示(UILabel上)秒表代码 代码紧凑,传值、回调都很方便,省去了写代理很多代码。...如下图: 单例模式理解与使用 单例模式是一种常用设计模式,单例模式是一个系统只有一个实例对象。

1.1K20

老司机带你走进Core Animation 之CADisplayLink

不过既然苹果专门提供了这么一个,就一定是有他存在意义。他优势就在于他执行频率是根据设备屏幕刷新频率来计算。换句话讲,他也是时间间隔最准确定时器。 还是使用中介绍吧。...userInfo,用户参数,初始化时候传入用户参数。 说到这里其实NSTimer也就基本介绍完成了,不过老司机还是想着重讲一下NSTimer。...fire只是单独触发了一次事件,并不影响原timer节奏。 fire 如上图,默认情况且,根据我写代码,timerB是不会执行,应为当前mode并不正确(后面会说)。...关于invalid方法 我们知道NSTimer使用时候如果不注意的话,是会造成内存泄漏。原因是我们生成实例时候,会对控制器retain一下。...mode集合,将输入源加入此模式意味着Common Modes包含所有模式下都可以处理。

1.4K20

JavaWeb高级编程(下篇)

Spring Framework提供了一个模型-视图-控制器(MVC)模式框架,它可以简化创建交互式Web应用程序过程。...Java EE Web应用程序,Spring将使用派发器Servlet处理Web请求,该Servlet将把进入申请委托给合适控制器,并按需要对请求和响应实体进行转换。...@RequestMapping注解将把请求被映射到方法缩小到特定方法上。可以只控制器方法添加@RequestMapping,或者同时控制器和它方法添加。...使用服务和仓库支持控制器 模型-视图-控制器模式 第一步:视图发送命令到控制器 第二步:控制器从模型读取或操作数据 第三步:模型将数据发送到控制器 第四步:控制器将模型发送到视图 用户界面逻辑是所有只用于支持特定用户界面的逻辑...如果希望指定应该在方法执行时应用验证组,可以使用@javax.validation.GroupSequence和@ValidateOnExecution。

1.1K10
领券