iOS组件化(基于Cocoapods) * 组件化前提先确保已经 安装Cocoapod * 组件化前提: 先将 git权限问题搞明白 * 组件库实际就是一个git代码库 * 私有源库实际也是一个git代码库, 不过里面只有以.podspec结尾的文件 注册 trunk pod trunk register xxxx@gmail.com manajay 创建本地私有库 * 创建 pod lib create xxx * Class 中添加代码文件 * Assets 中添加图片等资源 : 注意获取资源使用 [NSBundle bundleForClass:self], 注意图片要全名, 如果使用了资源,那么 podfile文件中添加描述use_frameworks! 更改本次的版本描述 * podspec文件 * 注意 version 一定要对应 git tag * source_files * dependency * resource_bundles 验证本地的组件库是否有效
protobuf-简单使用 本文章只用来记录临时笔记,后续完善 protobuf * 数据传输协议 同类型的有 XML Json Objective-C的使用 * 运行环境 使用homebrew安装 ,如果不懂,看完其他文章 homebrew install protobuf * OC插件下载地址 protobuf-objectivec-3.4.0.tar.gz , 安装方法: // cd到插件文件夹,我的下载到桌面安装 cd ~/Desktop/protobuf-objectivec // 执行编译脚本 objectivec/DevTools/full_mac_build.sh // 查看编辑后的日志,是否有 test pass 等标志,有则说明安装成功 生成命令 protoc --proto_path=. --objc_out=. UpDriverPosition.proto * protoc 为proto的生成指令
OCLint 静态代码分析 环境 * Homebrew 终端安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" * oclint 安装 brew install oclint * xcpretty 安装 gem install xcpretty 脚本 关键点 * 明确项目是否依赖CocoaPods * 使用xcodebuild -list, 明确 scheme target configuration * xcodebuild clean * xcodebuild -target xxx -scheme xxx 或者 xcodebuild -workspace xxx -scheme
iOS离屏渲染 为了让 UI 显得更好看 应用中有非常多的地方会使用的圆角的图片 但是一般的系统 layer 圆角设置方式通常会导致严重的离屏渲染问题, 尤其是在列表中 本文主要是对seedante的解决方案总结
iOS中去除Warning 过期方法的 warning 消除 #pragma clang diagnostic push #pragma clang diagnostic ignored "警告标识的描述" // 例如 -Wdeprecated-declarations // 过期的方法 // #pragma clang diagnostic pop // for example #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(CGFLOAT_MAX, height) lineBreakMode:self.lineBreakMode]; #pragma clang
极光推送的使用 苹果的APNS 1. 用户的应用注册了APNS 消息推送功能 2. 用户iOS设备通过SSL长连接到APNS苹果服务器,收到设备应用的注册信息后,下发给设备一个DeviceToken 给 应用 3. 应用收到这个DeviceToken 然后推送给 自己应用的服务器 (应用到推送服务器的流程完毕) 4. 推送服务器 发送消息到一个用户的时候, 会首先查找到 DeviceToken,然后将消息和DeviceToken 发送给 苹果的 APNS 服务器 5. 苹果根据 DeviceToken 找到唯一的那台设备, 然后将消息 传递过去 6. 设备收到了消息后, 会根据DeviceToken 找到应用 (推送服务器到设备应用的流程完毕) 极光推送的流程 这里和上面唯一不同的就是, 应用的服务器改为了 极光的服务器 1. 设备获取到DeviceToken 后 需要将这个 信息 上传到 极光的 服务器上面 2. 然后
iOS原生与JS的交互 目的: * 交互<1> 原生调用JS * 交互<2> JS调用原生 方式: * 拦截协议 * JavaScriptCore库 * WKWebView * 自定义NSURLProtocol拦截 * WebViewJavascriptBridge UIWebview 适配iOS7 HTML 网页的源代码 var res = { "title":" 端午礼包提回去,丈母娘不满意来找我!!!", "url":"http:\/\/app.xxx.com\/news\/rd\/content_wap_39865.shtml", "image":"http:
iOS解析json 浮点型数据,精度丢失问题 问题描述 服务端传递回来的是 保留小数点两位的浮点型,iOS端解析后,发现 取出字段的doubleValue后 精度丢失,小数点后多了很多位 原值 71.20 解析后 71.199997 原始数据 { "bigDecimalNumber": 71.20, "bigDecimalString":"71.20" } #import "NSNumberTest.h" NSString const * kBigDecimalNumberConst = @"bigDecimalNumber"; NSString const * kBigDecimalStringConst = @"bigDecimalString"; @implementation NSNumberTest + (NSString *)valueOfNSNumber:(NSNumber *)number
项目 project 与 target 动态库 静态库的知识 本文是阅读笔记, 原文在 最下面 项目 project 与 target 动态库 静态库的知识 1. project就是一个项目,或者说工程,一个project可以对应多个target 2. targets之间完全没有关系。但target和project有关系,target的setting会从project settings中继承一部分 3. Copy Bundle Resources 是指生成的product的.app内将包含哪些资源文件 4. Compile Sources 是指将有哪些源代码被编译 5. Link Binary With Libraries 是指编译过程中会引用哪些库文件 编译变量 设置开发和发布版的宏名 #if DEBUG // 这是正式版咯 #else // 这是开发版咯 #endif 这里补充一种方法 , Xcode中可以利用Compiler Flags来设置宏 可以通过设置Compiler Flags来定义宏,然后就可以在代码中使用这些宏,来进行条件编译的操作。有三种方式设置: