- 博客(24)
- 资源 (3)
- 收藏
- 关注
翻译 selector 与 动态绑定
selector什么是 selector当你要执行一个对象的方法时,一个selector就是用来选择这个方法的名字的,或者说资源文件被编译时方法的唯一标识。一个selector本身什么也做不了。它只是简单地标明一个方法。唯一使得selector方法名字和普通字符串不同的是,编译器能够确保selector方法名是唯一的。当与runtime结合使用的时候,selector就很有用了,它就像一个拥有特定名
2017-04-22 19:41:04
456
原创 Injection for Xcode
工作原理injection通过分析上次的build日志来得出资源文件是如何被编译的。在这个分析结果的基础上进行再次编译,并将再次编译的结果包裹到一个bundle中,然后使用动态加载器将这个bundle注入到应用当中。至此应用中已经有了某个类的两个版本,一个原始版本一个来自bundle中的已修改版本。接着,被修改的版本被swizzled到原始的类中并发挥作用。这种特性适用于OS X和iOS的模拟器以及
2016-11-29 14:55:42
1330
原创 self-sizing-in-UICollectionView
给出最接近的预估大小设置estimatedItemSize,UICollectionView需要拿这个值去设置一个初始的contentSize,所以给一个最为接近的值,ios10中提供了一个UICollectionViewFlowLayoutAutomaticSize的常量,这个值可以在cell不断加载的过程中调整预估大小,使contentsize的大小越来越接近实际大小。设置好cell的约束与UI
2016-09-27 08:47:35
1229
原创 estimatedRowHeight 与 self sizing cells
estimatedRowHeight 与 self sizing cellsestimatedRowHeight为什么要引入estimatedRowHeight呢?顾名思义就是预估高度。在预估高度之前,与高度相关的属性及方法比较常用的有以下两个: * rowHeight:这个属性适合用于拥有固定高度的tableview,这种方式比较高效,滚动时没有任何高度计算,可以得到较好的滚动体验。 *
2016-09-19 12:59:14
1458
翻译 identifierForVendor
@property(nonatomic, readonly, strong, nullable) NSUUID *identifierForVendorDescription:An alphanumeric string that uniquely identifies a device to the app’s vendor. (read-only)The value of this proper
2015-11-06 14:27:30
1199
翻译 Swift中的集合类数据结构
假设你有一个需要处理许多数据的应用。你会把收据放在哪儿?你怎么样高效地组织并处理数据呢?如果你的项目只处理一个数字,你把它存在一个变量中。如果有两个数字你就用两个变量。 如果有1000个数字,10,000个字符串或者终极模因库呢(能马上找到一个完美的模因不是很好吗)?在那种情况下,你将会需要一种基本的集合类数据结构。幸运的是,这篇教程就是关于那个主题的。下面是这篇教程的构成:你将会复习什么是数据
2015-09-15 08:27:54
2322
原创 GCD学习笔记
简介1.什么是GCCD 全称是Grand Central Dispatch 纯C语言,提供了非常多强大的函数2.GCD的优势 * GCD是苹果为多核的并行运算提出的解决方案 * GCD会自动利用更多的CPU内核(比如双核、四核) * GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程) * 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码3.GCD中有两个核心
2015-09-14 16:51:31
567
原创 多线程学习笔记-01
多线程概念NSThread:基本使用 现成状态 资源抢夺 互斥锁&原子属性 线程间通讯GCD:队列&任务 GCD常用代码&队列的选择 其他功能(延时,一次性执行,分组)NSOperation:简单使用 其他功能(最大并发数,队列的暂停&继续,任务的依赖关系) 网络图像加载实现(无沙盒缓存,沙盒缓存,SDWebImage实现原理)多线程基础什么是进程?进程是指系统中正在运行的一个应用程序每
2015-09-07 17:27:04
513
原创 Runtime学习笔记
1.什么是运行时(Runtime)?1> Runtime System* 所有的iOS程序的幕后支撑着都是运行时系统* iOS程序的方法调用都是要靠运行时系统来支持的2> Runtime Library* 一套苹果提供的纯C语言的库(API)* 运行时库的作用a)能为一个类动态添加成员变量、动态添加方法、动态修改方法的实现b)能动态交换2个方法的实现(可以给系统自带的方法替换实现)
2015-08-27 15:24:25
622
转载 @property @synthesize @dynamic
摘自:微博@iOS程序犭袁@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的@property 的本质是什么? @property = ivar + getter + setter;下面解释下: “属性” (property)有两大概念:ivar(实例变量)、存取方法(access method = getter + setter)。“属
2015-08-26 10:57:20
1287
翻译 Swift:什么时候使用结构体和类
Swift:什么时候使用结构体和类发布于 2015 年 8 月 14 日世界上对swift持续不断的讨论话题中有一个就是什么时候使用结构体什么时候使用类。我想我今天要贡献一些自己的想法。值 VS 引用答案其实很简单:当你需要值语义(所谓值语义是一个对象被系统标准的复制方式复制后,与被复制的对象之间毫无关系,可以彼此独立改变互不影响)的时候使用结构体,当你需要引用语义(所谓值语义是一个对象被系统标准的
2015-08-14 16:57:04
2140
转载 深入理解Tagged Pointer
为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于64位程序,引入Tagged Pointer后,相关逻辑能减少一半的内存占用,以及3倍的访问速度提升,100倍的创建、销毁速度提升。本文从Tagged Pointer试图解决的问题入手,带领读者理解Tagged Pointer的实现细节和优势,最后指出了使用时的注意事项。
2015-08-13 13:46:26
717
原创 iOS推送过程详解
闲得无聊集成了一下信鸽推送,首先信鸽推送的文档里面有很详细的关于生成推送证书的教程,以后再要生成证书记不住过程的看它就可以了。即使你不用第三方,证书生成的过程是一样的。推送证书生成详细过程注:需要强调一点的是,我在生成开发证书和发布证书的过程中犯了一个错误,由于两个成证书都需要生成cerSigningRequest(CSR)文件,因此我的发布和开发证书都使用了同一个,于是就怎么着都推送不成功,重新生
2015-08-12 16:24:36
1025
原创 隐藏导航栏时添加在self.view上的Tableview位置产生20个单位的误差
也许你已经发现了,当你隐藏了页面中的导航栏,并且在self.view上添加了一个tableview时,你的tableview的位置会向下偏20个单位,并且你怎么找都找不到问题所在。。。因为这就不是你的问题。你会发现在ios7.1及以上的系统下都会存在这个bug(7.1版本以下我没有试过,可以自己试试),解决办法就是不要直接把你的tableview加在self.view上,而是先要在self.view
2015-07-30 14:27:19
4176
原创 使用富文本在lable上展示不同颜色的文字,自定义label高度,自定义行间距
废话不多说,直接上代码第一段代码主要是创建富文本,并给文字赋值给label,调整文字的颜色字体行间距等- (void)createLabel{ UILabel * textLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 250, 200, 20)]; textLabel.backgroundColor = [UI
2015-06-15 13:45:48
1556
原创 MKMapKit
1.创建地图: _mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; _mapView.delegate = self; _mapView.userInteractionEnabled = YES; _mapView.centerCoordinate = CLLocationCoordinat
2015-06-08 16:50:52
617
翻译 The Swift Programming Language - Closures
Closures“Closures are self-contained blocks of functionality that can be passed around and used in your code. Closures in Swift are similar to blocks in C and Objective-C and to lambdas in other p
2015-06-01 10:02:01
1092
翻译 SDWebImage基本使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *MyIdentifier = @"MyIdentifier"; UITableViewCell *cell = [tableView de
2015-02-10 13:40:45
581
翻译 Apple Push Notification Service(苹果推送服务)
https://developer.apple.com/library/IOS/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.htmlApple Push Notification Service苹果推送服务Apple Push
2015-02-04 09:44:38
7771
原创 UIScrollview实现左右循环滑动和自动轮播
这个Demo的最初的想法是我从网上的一个简单的例子中获取的,加以修改,成了现在的样子。我们在很多时候需要一个轮播图,比如项目中广告的轮播。能让scrollview自动滚动,这不是什么困难的事,但是如果能让scrollview朝一个方法循环播放下去,这费了我不少功夫。另外,这个demo中轮播的图片是5张,而scrollview的大小只能放下三张图片,所以这是一个少scrollview版的轮播图。
2015-01-13 14:23:17
1379
原创 关于友盟分享
下面分享一些关于友盟分享的一些流程和经验。首先为了给我们的应用添加分享功能,我们要在友盟开发者平台上面进行注册登录,之后,创建应用。创建过程如下:1.友盟-我的产品-管理-添加新应用填好了以上内容,你便可提交获取你应用的AppKey了,记下你的AppKey。2.下载友盟SDK添加到工程中,文档中心-社会化组件-IOS,下载该组件,添加到工程文件夹中。3.到你要集成的平台
2015-01-12 14:13:57
1029
YKDropDownMenu
2015-11-04
五星评分Demo
2015-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人