-
编译错误 error clang importer creation failed
项目里有四个 target ,其他三个都能编译通过, 还有一个死活过不了。四个项目代码完全一样,就是配置不一样。编译时报以下错误<unknown>:0: error: PCH file '/Users/xxx/Library/Developer/Xcode/DerivedData/yg-hiamcrahplfrcgffnenbmeyjsoep/Build/Intermediates.noindex/PrecompiledHeaders/yg-Bridging-Header-sw...…
-
Hash 表实现
Hash 表、二叉树、链表是最常见的数据结构。 本文中用C++来实现一个简单的哈希表,帮助理解哈希表是怎样运作的。为了简化代码并突出逻辑,采用简单的除余数作为散列函数,用线性探测来处理碰撞。线性探查法是用开放定址法处理冲突的一种最简单的探查方法。 它从发生冲突的d单元起,依次探查下一个单元 当达到下标为m—l的表尾单元时,下一个探查的单元是下标为O的表首单元。 即把散列表看作为首尾相接的循环表,直到碰到一个空闲单元或探查完所有单元为止。 这种方法的探查序列为d,d+l,d+2,…,或表示...…
-
iOS 注册可分享文件类型
最近开发的 App 有个需求,需要获取本地的录音文件。找了半天没有找到好的解决方案,发现微信的方法是在 录音备忘录 中分享至微信。苹果官方文档地址注册可接受文件类型因为我打开的是录音文件,这里就以 iOS 的录音文件为例 (*.m4a) 打开 info.plist 文件,添加项 Document types 展开 Document types 的 item 0 选项 Document Type Name 自定义Name,自己可以随便填 CFBundleTypeIconFiles 指...…
-
CentOS 下搭建 shadowsocks 服务
之前买的ss账号都不能用了,决定自己买一个海外服务器搭建ss服务。1. 选择服务器我这里服务器选的 DigitalOcean ,选它不是因为他家速度快,价格便宜,而是因为注册送了我 10 刀,可以免费先用两个月。配置是最低配的啦,完全足够用了。系统用的 centos6.9 .创建好vps (Droplet)后,root用户的密码会发到你邮箱你。2. 登录vps服务器选好了以后,登录到你的服务器。Linux/Unix 下面可以直接用ssh从终端登录ssh root@you_real_ip当然...…
-
CocoaPods 私有库详解
前言现在的项目完全是用组件化的思路开发的,也是借此机会亲自实现了一把。项目里的每个业务模块都是使用cocoapods 私有库开发,依赖下层开发或者二次封装的私有库。这里先介绍一下我的私有库使用案例。私有库创建我项目里的功能模块都是用的官方的私有库模版。跑如下命令pod lib create __ProjectName__然后根据一系列提示定制你的私有库配置.编辑 .podspec 文件 s.name 就是你私有库的名称 s.version 你的私有库版本 s.summary 简单的介...…
-
C++ (OC) 内存管理 & 智能指针
前言现在开发的项目中用到了大部分 C++ 代码,由于 Swift 和 C++ 混编不是很方便, 依然选择用 OC 混编, 只需要将 .m 文件 修改为 .mm 文件即可。OC 里的对象大部分都会加入自动释放池中,所以这些都不用手动释放,但是 C++ 对象不会被加入自动释放池,必须要手动释放,否则会造成内存泄漏。 .mm 文件中可以随意的 new CppObject(), 但是要记得 delete 。当cpp指针被当前对象引用时,当前对象的 dealloc 方法里要记得释放该资源。借助这个机...…
-
C++ 调用 OC
iOS 开发中,经常会用OC 与 C++ 混合开发。本篇文章就介绍一下 OC / C++ 的相互调用.OC => C++ 把调用方的文件修改: .m => .mm 引用C++头文件: #include "xxx.h" or #import “xxx.h” 创建对象CppObject * cppObj = new CppObject(); 释放对象delete cppObj;OC 调用 C/C++ 就这么简单。注意的是,要记得释放 new 出来的对象,要不然会内存...…
-
Docker docker-compose 配置lnmp开发环境
1 安装Docker本机在CentOs7 下安装Docker,其他平台也一样 首先查看当前内核版本是否高于 3.10$ uname -r3.10.0-327.el7.x86_64//安装docker yum -y install docker//启动dockerservice docker start//查看版本信息docker info安装hello-world 镜像docker run hello-world运行时的输出可以看到docker 是从本地镜像开始找,如果没有该镜像则去Doc...…
-
OCLint 使用
最近要在持续化交付上添加一环,静态代码分析。虽然xcode的Analyze 也有这个功能,但是那个工具用起来比较麻烦,需要手动去操作。接下来就看看OCLint 的使用吧。本次环境配置是在xcode8 环境下,xctool 已不再支持xcode8.我是用homebrew 安装的。首先添加下载源 ,然后正式安装。 brew tap oclint/formulae brew install oclint安装oclint完成后需要安装xcpretty ,该工具可以将编译的代码产生的信息格式化输出。...…
-
iOS 单元测试 - TDD
TDD测试驱动开发(Test Driven Development,缩写TDD),它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成相应的测试用例,然后编写相关代码满足这些测试,然后循环添加这些功能,直至开发结束。TDD 的优点 开发完成即完工。传统的编码方式很难知道什么时候编码结束了,TDD模式下开发人员可以明确自己的编码工作已经结束了。 代码大部分保持在高质量状态。 减少文档和代码之间的差别。开发过程: 明...…