ios

iOS - GATT Profile 简介

09-19
1.引言 现在低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上.GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短的数据段被称为属性(Attribute). 2.GAP 详细介绍 GATT 之前,需要了解 GAP(Generic Access Profile),它用来控制设备连接和广播.GAP 使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互.例如 Beacon 设备就只是向外广播,

iOS - Quartz 2D 第三方框架 Charts 绘制图表

09-16
1.Charts 简介 使用第三方框架 Charts 绘制 iOS 图表.GitHub 源码 Charts Charts 是一款用于绘制图表的框架,可以绘制柱状图.折线图.K线图.饼状图等.Charts 只有 Swift 版本. LineChart (with legend, simple design) LineChart (with legend, simple design) LineChart (cubic lines) LineChart (gradient fill) Combine

iOS - Quartz 2D 手势截屏绘制

09-16
1.绘制手势截屏 具体实现代码见 GitHub 源码 QExtension QTouchClipView.h @interface QTouchClipView : UIView /** * 创建手势截屏视图控件,获取截屏结果 * * @param view 截取图片的视图控件 * @param result 手势截屏结果 * * @return 手势截屏视图控件 */ + (instancetype)q_touchClipViewWithView:(UIView *)view clipResu

iOS - Analyze 静态分析

09-06
1.Analyze 使用 Xcode 自带的静态分析工具 Product -> Analyze(快捷键 command + shift + B)可以找出代码潜在错误,如内存泄露,未使用函数和变量等. Analyze 主要分析以下四种问题: 1.逻辑错误:访问空指针或未初始化的变量等: 2.内存管理错误:如内存泄漏等,比如 ARC 下,内存管理不包括 core foundation: 3.声明错误:从未使用过的变量: 4.Api 调用错误:未包含使用的库和框架. 官方文档 Xcode 执行静态代码

iOS - Bundle 资源文件包

09-05
1.Bundle 文件 Bundle 文件,简单理解,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个 Bundle 文件.方便在其他项目中引用包内的资源. Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的.也就意味着,bundle 包中不能包含可执行的文件.它仅仅是作为资源,被解析成为特定的 2 进制数据. 2.制作 Bundle 文件 1.新建 Bundle 项目 创建名为 SourcesBundle(最后要生成的 Bund

iOS - OC NSKeyedArchiver 数据归档

08-18
前言 @interface NSKeyedArchiver : NSCoder @interface NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象.通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象.可以使用归档的方法进行对象的深复制. 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 initWit

iOS - OC NSString 字符串

08-18
前言 @interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> @interface NSMutableString : NSString 1.不可变字符串的创建 // 直接创建不可变字符串 /* 在 OC 中,使用 @"XXX" 格式定义的字符串,是保存在常量区的,只要内容相同,内存地址就一致 */ NSString *string1 = @"bei jing hua

iOS - OC iOS 开发体系

08-17
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation 等 Core Services Core Data.Foundation 等 Core OS Accelerate Framework.External Accessory Framework.Security Framework.System 等 从图中可以看到,要想编写成型的产品,需要的不仅仅是

iOS - Swift iOS 开发体系

08-16
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation 等 Core Services Core Data.Foundation 等 Core OS Accelerate Framework.External Accessory Framework.Security Framework.System 等 从图中可以看到,要想编写成型的产品,需要的不仅仅是

iOS - AsyncSocket 的使用

08-14
1.AsyncSocket 基于 CFSocket.GCD 进行的封装(OC). 支持 TCP 和 UDP. 完整的回调函数(用于处理各种回调事件,连接成功,断开连接,收到数据等). 需要注意的问题: 1.Socekt 连接成功回调方法中主动调用:[self.socket readDataWithTimeout:-1 tag:0];,相当于主动添加一个读取请求,不然不会执行读取信息回调方法. 2.读取信息回调方法中,读取完信息后,主动调用一下 [self.socket readDataWithT

iOS - Block 代码块

08-14
1.Block Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的,类似于一个匿名函数,它和传统的函数指针很类似,但是 Block 是 inline(内联函数)的,并且默认情况下它对局部变量是只读的. 苹果官方建议尽量多用 Block.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多. Block 语法 // Block as a local variabl

iOS - ImageCache 网络图片缓存

08-14
1.ImageCache 使用内存缓存方式: 使用沙盒缓存方式: 使用网络图片第三方库方式: SDWebImage: iOS 中著名的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.gif 处理等等 用法极其简单,功能十分强大,大大提高了网络图片的处理效率 国内超过 90% 的 iOS 项目都有它的影子 1.图片文件缓存的时间有多长? 1 周 _maxCacheAge = kDefaultCacheMaxCacheAge; // - (id)initWithNamespace:

iOS - Label 数字动态变化

08-12
1.数字动态变化 具体实现代码见 GitHub 源码 QExtension QCountingLabel.h /// 文本数字变化方式枚举 typedef NS_ENUM(NSUInteger, QCountingMethod) { QCountingMethodEaseInOut, // 开始结束慢,中间快 QCountingMethodEaseIn, // 开始慢,结束快 QCountingMethodEaseOut, // 开始快,结束慢 QCountingMethodLinear //

iOS - UIStoryboard

08-10
前言 NS_CLASS_AVAILABLE_IOS(5_0) @interface UIStoryboard : NSObject @available(iOS 5.0, *) public class UIStoryboard : NSObject StoryBoard 是苹果在 iOS5 中引入的新技术方案,目的是给纷繁复杂的 nib.xib 们一个温暖的家,让他们之间的关系更直观地展示出来,并提供了一种新的页面间跳转方式 Segue.StoryBoard 的本质是一个 XML 文件,描述了

iOS - UIDevice

08-10
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIDevice : NSObject @available(iOS 2.0, *) public class UIDevice : NSObject iOS 的 APP 应用开发的过程中,有时为了 bug 跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发 api 可以获取到的.那么通过那些 api 可以获取这些信息呢,iOS

iOS - UITabBarController

08-10
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITabBarController : UIViewController <UITabBarDelegate, NSCoding> @available(iOS 2.0, *) public class UITabBarController : UIViewController, UITabBarDelegate, NSCoding UITabBarController: 分栏视图控制器,在创建时,需要一次性

iOS - UITextField

08-09
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding> @available(iOS 2.0, *) public class UITextField : UIControl, UITextInput, NSCoding 1.UITextField 的创建 Objective-C // 实例化 UITextField 对象 UITextField *textField =

iOS - UIWebView

08-09
前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIWebView : UIView <NSCoding, UIScrollViewDelegate> @available(iOS 2.0, *) public class UIWebView : UIView, NSCoding, UIScrollViewDelegate UIWebView 控件是做网络应用开发时使用的最多的一个控件,它实现了内置的浏览器(类似于 Saf

iOS - UIWindow

08-06
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView @available(iOS 2.0, *) public class UIWindow : UIView 1.Window 的创建 Objective-C // 声明窗口视图 @property (strong, nonatomic) UIWindow *window; - (BOOL)application:(UIApplication *)application didF

让kbmmw 4.8 支持ios 64

04-19
      随着xe8 的出来,其开始支持IOS 64 的编译了(不支持也没办法,从今年2月开始不支持ios 64 的应用 就不允许入住apple appstore,霸气呀).相信不少同学迫不及待的开始了ios64 的开发.    kbmmw 4.8 开始支持xe8,但是目前确无法直接编译IOS64 的应用,经过分析其源码,发现主要存在两个 问题.       一个问题是流的seek 方法,非ios64时可以 使用  soFromBeginning = 0;  soFromCurrent = 1