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

30天从零接手ios开发

由于公司原因,唯一ios的伙伴要离开了,临时要接手ios的开发任务,只有30天的交接时间,记录下这个过程 一开始,给自己定的步骤是这样的 学习objective-c语言(书本:objective-c应用开发全程实录...,没有其他页面可以参考的话,耗时还会更大的增加 另外实际开发中,对于实现效果也会有一些妥协,比如首页的资质证明功能,是上下两个UI,我采用的是写死布局位置的方法,当一个不可见,另外一个更新新的布局位置,...,选几个列取下 方法的调用,需要加中括号 [UILabel alloc] 上面的代码,代表执行UILabel类的alloc方法 对变量的声明,需要指定属性特性 @property(copy, nonatomic...0x00000001204c252e 0x0 + 4836828462 ) 一个有点不好看懂的代码(外面的中括号不能拿掉) @property (nonatomic, assign) NSInteger timeInterval...; self.timeInterval = [endDate ?

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

iOS工程师必看的 20 道 面试题

- (void)viewDidLoad { UILabel *alertLabel = [[UILabel alloc] initWithFrame:CGRectMake(100,100,100,100...当我们可以在一个后台线程中等待4秒,但是一定要在主线程中更新alertLabel。...简单来说,就是当两个对象互相有一个强指向去指向对方,这样导致两个对象在内存中无法释放。 weak 和 unowned 的使用场景有如下差别: 当访问对象时该对象可能已经被释放了,则用 weak。...Swift中若要使用Objective-C代码,可以在ProjectName-Bridging-Header.h里添加Objective-C的头文件名称,Swift文件中即可调用相应的Objective-C...Swift文件中若要规定固定的方法或属性暴露给Objective-C使用,可以在方法或属性前加上@objc来声明。

3.6K40

iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题

监听进入前台、进入后台的消息,在进入后台的时候存一下时间戳,停掉定时器(系统强制停止定时器);在再进入前台时,计算时间差。若剩余的时间大于时间差,就减去时间差,否则赋值剩余时间为0。...(主流) 方法二:苹果只允许三种情况下的App在后台可以一直执行:音视频、定位更新、下载,若是直播、视频播放、地图类、有下载的应用可以这样使用,但是有些小需求就不需这样做。...解决方法: 通过一个倒计时实例来展现一下运用,使用方法一来进行演示,方法二和方法三不再本篇进行介绍,如有需要自行了解解决。...具体核心代码步骤如下所示: @property (nonatomic, strong) NSTimer *timer; @property (nonatomic, assign) int seconds...pragma mark --按钮点击事件-- - (void)brewBtnClick { if (_timer) { return; } // 给计时器赋值 _timer = [NSTimer

6.2K84

iOS定时器,你真的会使用吗?前言正文结语

正文 iOS定时器 ---- 首先来介绍iOS中的定时器 iOS中的定时器大致分为这几类: NSTimer CADisplayLink GCD定时器 NSTimer 使用方法 NSTime定时器是我们比较常使用的定时器...forMode:NSDefaultRunLoopMode]; 需要注意的是: UIScrollView 滑动时执行的是 UITrackingRunLoopMode,NSDefaultRunLoopMode被挂起,导致定时器失效...其原因可以查看我这篇《Objective-C RunLoop 详解》中的 “RunLoop 的 Mode“章节,有详细的介绍。...若没有特殊要求的话,一般使用第二种方法创建完timer,自动添加到NSDefaultRunLoopMode中去执行,也是平时最常用的方法。...然而当系统休眠的时候,默认时钟是不走的,也就会导致计时器停止。使用 dispatch_walltime 可以让计时器按照真实时间间隔进行计时.

2.3K50

iOS中动态更新补丁策略JSPatch运用基础一

iOS中动态更新补丁策略JSPatch运用基础         JSPatch是GitHub上一个开源的框架,其可以通过Objective-C的run-time机制动态的使用JavaScript调用与替换项目中的...对于iOS应用来说,通过官方渠道AppStore进行应用程序的发布要通过人工审核,有时这个审核周期会非常长,如果在开发者在编写代码时留下了一些小漏洞,应用一旦上线,若要修改掉这个bug就十分艰难了。...三、JavaScript与Objective-C交互的基础方法         要使用JSPatch来进行Objective-C风格的方法编写,需要遵守一些JavaScript与Objective-C交互的规则...1.在JavaScript文件中使用Objective-C类    在编写JavaScript代码时如果需要用到Objective-C的类,必须先对这个类进行require引用,例如,如果需要使用UIView...这个类,需要在使用前进行如下引用: require('UIView') 同样也可以一次对多个Objective-C类进行引用: require('UIView, UIColor, UILabel') 还有一种更加简便的写法

86620

暗影骑士擎bios详解_runloop原理和机制

iOS的应用程序里面,程序启动后会有一个如下的main()函数 ( argc, * argv[]) { @autoreleasepool { return UIApplicationMain(...NSRunLoop提供了一个添加NSTimer的方法,这个方法是在应用正常状态下回调。 runloop的mode作用是什么?...对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环中的时候, ScrollView滚动过程中会因为mode的切换,而导致NSTimer将不再被调度...请写出NSTimer使用时的注意事项(两项即可) 思路和上一题一样,如果想要销毁timer,则必须先将timer置为失效,否则timer就一直占用内存而不会释放。造成逻辑上的内存泄漏。...为什么 UIScrollView 的滚动导致 NSTimer 失效?

62110

编码篇-ARC下的内存泄漏

ARC这是一种编译期的内存管理方式,在编译期间,编译器判断对象的使用情况,并在合适的位置加上retain和release,使得对象的内存被合理的管理。...CF类型内存 ARC 可以帮忙管理 Objective-C 对象, 但是不支持 Core Foundation 对象的管理,所以转换后要注意一个问题:谁来释放使用后的对象。...某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身;相互持有,导致都释放不了。...** NSTimer使用** NSTimerNSTimer会对它的target持有强引用,如果NSTimer不释放掉,就会一直持有它的target的强引用,如果这个NSTimer在被target强引用...循环未结束 如果某个ViewController中有无限循环,也导致即使ViewController对应的view关掉了,ViewController也不能被释放。

1.6K20

老司机带你走进Core Animation 之CADisplayLink

CADisplayLink的基本使用方法 OC中的三种定时器:CADisplayLink、NSTimer、GCD runloop浅析 ---- CADisplayLink 点进CADisplayLink...类比NSTimer,CADisplayLink也有一个计时器销毁的方法: -(void)invalidate; 调用这个方法,从所有runLoop中移除当前实例,这个方法可以用于不需要计时器后对他进行释放前的操作...关于invalid方法 我们知道NSTimer使用的时候如果不注意的话,是造成内存泄漏的。原因是我们生成实例的时候,会对控制器retain一下。...在Cocoa应用程序中,默认情况下Common Modes包含default modes,modal modes,event Tracking modes.可使用CFRunLoopAddCommonMode...关于GCD的timer使用起来相对简单,不过,其实操作不当的话也造成内存泄漏! 处于挂起(也就是掉用过 dispatch_suspend())的源是不能释放的。这样就会造成内存泄漏。

1.4K20

Objective-C三种定时器CADisplayLink NSTimer GCD的使用

在Cocoa应用程序中,默认情况下Common Modes包含default modes,modal modes,event Tracking modes.可使用CFRunLoopAddCommonMode...注意不是立即开启定时器 @property (copy) NSDate *fireDate;  //当前事件的触发事件, 一般用来做暂停和恢复 @property (readonly) NSTimeInterval timeInterval...通常我们使用这个属性来做计时器的暂停与恢复。...关于invalid方法 我们知道NSTimer使用的时候如果不注意的话,是造成内存泄漏的。原因是我们生成实例的时候,会对控制器retain一下。...NSTimer的优势:使用相对灵活,应用广泛 劣势:受runloop影响严重,同时易造成内存泄漏(调用invalid方法解决) -------------------我是分割线-------------

2.1K31

iOS 中的定时器

NSInvocation的禁止其实也影响到 NSProxy 在 Swift 中的使用,在 OC 中,我们一般采用继承 NSProxy中的方式实现一个弱代理来解决常见的循环引用问题,比如常用的YYKit..."" } } Runloop 强引用 Timer 如果是一次性调用的 Timer(即repeats参数设置为false),会在调用完毕之后自动 invalidate 掉自身,当然一次性调用这种使用场景也是比较少见...而是会停止下一次 event 事件; suspend()和resume()需要成对出现,挂起一次,恢复一次,如果 Timer 开始运行后,在没有 suspend() 的时候,直接调用resume(),导致...APP 崩溃; 当 Timer 处于 suspend 的状态时,如果销毁 Timer 或其所属的控制器,导致 APP 崩溃。...、DispatchSourceTimer、CADisplayLink)[8] 从 RunLoop 源码探索 NSTimer 的实现原理(iOS)[9] 参考资料 [1]YYWeakProxy: https

1.2K20

iOS,面试必看,最全梳理

发信号,Controller设置监听接受信号,当有数据更新时就发信号给Controller,Model和View不能直接进行通信,这样违背MVC设计模式。...对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环中的时候, ScrollView滚动过程中会因为mode的切换,而导致NSTimer将不再被调度...对于多变的自定义Cell,这种重用机制导致内容出错,为解决这种出错的方法,把原来的 UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier...使用NSTimer写出一个使用block显示(在UILabel上)秒表的代码 代码紧凑,传值、回调都很方便,省去了写代理的很多代码。...NSTimer封装成的block,具体实现 实现方法: NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES

1.1K30

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

发信号,Controller设置监听接受信号,当有数据更新时就发信号给Controller,Model和View不能直接进行通信,这样违背MVC设计模式。...对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环中的时候, ScrollView滚动过程中会因为mode的切换,而导致NSTimer将不再被调度...对于多变的自定义Cell,这种重用机制导致内容出错,为解决这种出错的方法,把原来的 UITableViewCell cell = tableview dequeueReusableCellWithIdentifier...使用NSTimer写出一个使用block显示(在UILabel上)秒表的代码 代码紧凑,传值、回调都很方便,省去了写代理的很多代码。...NSTimer封装成的block,具体实现 实现方法: NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES

1.1K20

【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

nib 界面设计文件, storyboard 是新版本使用的; -- Supporting Files : 支持库, 一般保存 不是 Objective-C 的源代码 和 资源文件; Supporting...是文本文件, nib 是二进制文件, Xcode 编译项目时 会将 xib 文件转为 nib 文件;  -- nib 文件 : Interface Builder 把窗口, 菜单栏 以及 各种 UI 组件都冻结在...// 通常来说的,当应用程序突然被中断(比如有电话、短信进来时),系统将会回调该方法 // 另外,当用户离开该程序,程序开始转入后台状态时也回调该方法。...//使用 IBOutlet 获取 UI 控件 [self.label1 setText:@"Tom"]; //使用 tag 获取 UI 控件 UILabel * label_tag...; -- 获取 UILabel 控件 : 通过 viewWithTag : tag标签 获取 UI 控件的引用;  //使用 tag 获取 UI 控件 UILabel * label_tag

4.9K30

IOS开发之简单音频播放器

在播放器中我们用到了UIProgressView(进度条)来显示音频的播放进度,用UILabel显示播放的当前时间和总时间。...上面的执行组件都是UIKit中的组件,我们要定时的获取音频的播放时间,我们还要用到NSTimer来定时获取CurrentTime。...@property (strong, nonatomic) NSTimer *timer;   //显示时间的lable @property (strong, nonatomic) UILabel *...下面的定时器是1秒中重复调用我们当前view中的time方法,在time方法中我们获取当前音频的当前播放时间,并在lable中显示,稍后会提到    ​ 1 2 //设置时间,每一秒钟调用一次绑定的方法...self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(time) userInfo

1.6K60
领券