摘要:需求:点击某个地方触发事件,可以自由的切换测试、预生产、生产三种环境。 原理:用NSUserDefault或者Singleton去维护环境变量集合。 宏定义配置 /***************单例模式宏**************/ #define MACRO_SHARED_INSTANCE_IN 阅读全文
posted @ 2018-04-27 14:44 黄增松 阅读(1934) 评论(0) 推荐(0) 编辑
摘要:开发一般APP必备三方库,省力秘籍!!!本篇文章会经常更新最新常用的三方。 1.网络请求库 AFNetworking https://github.com/AFNetworking/AFNetworking swift版 https://github.com/Alamofire/Alamofire 阅读全文
posted @ 2018-04-12 17:14 黄增松 阅读(2067) 评论(1) 推荐(1) 编辑
摘要:1.生成.framework前的配置工作详见:http://www.cnblogs.com/huangzs/p/8029258.html 2. 将以下脚本粘贴进去,修改FMK_NAME。 # Sets the target folders and the final framework produc 阅读全文
posted @ 2018-01-03 16:39 黄增松 阅读(227) 评论(0) 推荐(1) 编辑
摘要:一:GitHub新建仓库,并clone到本地 1、注册GitHub账号并登录 2、右上方点击+,新建仓库(仓库名字(Repository name)、仓库权限(Public)、readme、license) 创建完成如下图: 3、检出仓库 新建一个文件夹SDK: 打开终端: 将FireRadarSD 阅读全文
posted @ 2017-12-22 19:19 黄增松 阅读(576) 评论(0) 推荐(0) 编辑
摘要:代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将原工程里调试好的FRSDK代码copy到此工程后为下图 4.接下来我们选择出来需要暴露出来的头文件 阅读全文
posted @ 2017-12-12 18:55 黄增松 阅读(432) 评论(0) 推荐(0) 编辑
摘要:代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将原工程里调试好的FRSDK代码copy到此工程后为下图 4.接下来我们选择出来需要暴露出来的头文件 阅读全文
posted @ 2017-10-19 16:21 黄增松 阅读(4009) 评论(0) 推荐(0) 编辑
摘要:1。第一种解决方案 就是在每一个 可能传回null 的地方 使用 if([object isEqual:[NSNUll null]]) 去判断 2。第二种解决方案 网上传说老外写了一个Category,叫做NullSafe..只支持到ios9,3 ,实测 并没有解决我的问题.. NullSafe的原 阅读全文
posted @ 2017-08-29 23:28 黄增松 阅读(1653) 评论(0) 推荐(0) 编辑
摘要:一、文档结构管理 1.建立Library文件夹,所有第三方库放入其中。 2.建立Tool文件夹,自已封装的工具类放入其中。 3.建立Constant.h头文件,常量定义于其中。Constant.h文件放入Tool文件组里面。 4.建立Model、View、Controller三个文件夹,每个文件夹里 阅读全文
posted @ 2016-07-07 16:55 黄增松 阅读(343) 评论(0) 推荐(1) 编辑
摘要:需求:获取经纬度。 方案:我自定义了一个类模块CLLocationModule.swift 备注以下代码里 let IS_IOS8 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0 最开始的代码 imp 阅读全文
posted @ 2016-03-29 19:16 黄增松 阅读(2011) 评论(1) 推荐(0) 编辑
摘要:先回顾一下视频里面到底是什么 视频 内容元素 1.图像(image) 2.音频(Audio) 3.元素信息(Meta-data) 编码格式 1.Video:H264 2.Audio:AAC(后面文章讲) 3.容器封装:MP4/MOV/FLV/RM/RMVB/AVI H264 当我们需要对发送的视频文 阅读全文
posted @ 2021-04-12 14:59 黄增松 阅读(7) 评论(0) 推荐(0) 编辑
摘要:__weak修饰的变量,不会出现引用计数+1,也就不会造成block强持有外部变量,这样也就不会出现循环引用的问题了。 但是,我们的block内部执行的代码中,有可能是一个异步操作,或者延迟操作,此时引用的外部变量可能会变成nil,导致意想不到的问题,而我们在block内部通过__strong修饰这 阅读全文
posted @ 2021-03-29 13:37 黄增松 阅读(5) 评论(0) 推荐(0) 编辑
摘要:Flutter语言:Dart 性能:优 APIs & UI:内置组件 IDE:VSC,IntelliJ,Android Studio 文档:详尽 配置环境:简单,内置库 RN语言:JavaScript 性能:中等 APIs & UI:三方库 IDE:所有 文档:差 配置环境:需要三方解决方案 阅读全文
posted @ 2021-03-29 09:47 黄增松 阅读(2) 评论(0) 推荐(0) 编辑
摘要:检验和、 序列号/确认应答、 超时重传、 最大消息长度、 滑动窗口控制、 拥塞控制 阅读全文
posted @ 2021-03-29 09:43 黄增松 阅读(4) 评论(0) 推荐(0) 编辑
摘要:预处理,编译,抽象语法树,链接静态库,生成app文件,打包成ipa上传appstore 像C++,Objective C都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在CPU上执行,所以执行效率较高。 iOS开发目前的常用语言是:Objective和Swift。二者都 阅读全文
posted @ 2021-03-16 17:26 黄增松 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一个指针在32位的计算机上,占4个字节;一个指针在64位的计算机上,占8个字节。 指针就是地址,地址就是指针。 扩展: int a = 10; char b = 'b'; short c = 2; long d = 9; float e = 6.29f; double f = 95.0629; in 阅读全文
posted @ 2021-03-12 11:18 黄增松 阅读(21) 评论(0) 推荐(0) 编辑
摘要:@interface List : NSObject { NSString *_name; } -(void)setName:(NSString *)name; -(NSString *)name; @end @implementation List -(void)setName:(NSString 阅读全文
posted @ 2021-03-10 11:05 黄增松 阅读(12) 评论(0) 推荐(0) 编辑
摘要:自旋锁:OSSpinLock(不安全,已遗弃) 互斥锁:pthread_mutex、@ synchronized、NSLock 条件锁:NSConditionLock 、NSCondition、 信号量:dispatch_semaphore_t 读写锁:atomic 递归锁:NSRecursiveL 阅读全文
posted @ 2021-03-09 17:15 黄增松 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1.创建一个UIButton的分类 #import "UIButton+TJHitRect.h" 2.引入头文件 #import <objc/runtime.h> 3.给分类加属性 /** 自定义响应边界 UIEdgeInsetsMake(-3, -4, -5, -6). 表示扩大 例如: self 阅读全文
posted @ 2021-03-08 15:31 黄增松 阅读(31) 评论(0) 推荐(0) 编辑
摘要:// 接收通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"TestNotification" object:@1]; // 发送通知 [N 阅读全文
posted @ 2021-03-04 16:42 黄增松 阅读(29) 评论(0) 推荐(0) 编辑