- 博客(70)
- 收藏
- 关注
原创 mobileconfig使用发布者证书动态签名
其中涉及文件1.inf.mobileconfig来源:导入的未签名配置文件,先通过电脑的隔空投送到手机,测试文件可正常使用。2.outf.mobileconfig来源:导出的已签名配置文件3.discer.pem来源:发布者证书导出的pem文件(服务器linux不能直接使用p12)生成方法:首先在钥匙串中导出最新未过期的发布者证书p12文件。文件命名为discer.p12 不设置密码在discer.p12同目录下执行命令 openssl pkcs12 -clc
2022-04-16 13:19:02
1874
转载 iOS CoreBluetooth
一、引言 蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单。相关的蓝牙操作由专门的 CoreBluetooth.framework进行统一管理。通过蓝牙进行通讯交互分为两方,一方为中心设备central,一方为外设 peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据
2017-12-14 17:33:36
286
原创 Mac划内存为硬盘
#!/bin/bashAMDISK=”ramdisk”SIZE=4096diskutil erasevolume HFS+ $RAMDISK \ `hdiutil attach -nomount ram://$[SIZE*2048]`
2017-09-15 14:33:21
1111
转载 iOS 9下Universal Link(通用链接)开发
在iOS 9以前,我们从外部启动App都是通过URL Scheme实现跳转的。这种方式虽然可自定程度很高,能够巧妙地实现很多跳转,但弊端也很明显:我们只能通过scheme://example这种格式的链接来实现跳转,而且现在苹果还对这种方式的跳转加了一个提示框:“是否打开XXX”。对于对Web和原生App交互的场景需求量很大的产品来说,这样的跳转方式显然是步骤冗杂的,用户体验并不好。iOS 9
2017-08-07 16:28:54
743
转载 xcode 调试命令
在 debug 模式下如何在断点处,查看字符指针变量内存中的值,像vs2008的调试工具一样的内存查看器,现在只能查看第一个内存中的值可以在输出窗口采用gdb命令:x /nfu n表示要显示的内存单元的个数-----------------------------------------f表示显示方式, 可取如下值:x 按十六进制格式显示变量d 按十进制格式显示变量
2017-08-07 16:26:35
373
转载 UI状态保持和恢复
iOS设计规范中要求,当应用退出的时候(包括被终止运行时候),画面中UI元素状态需要保持的,当再次进来的时候看状态与退出是一样的。iOS6之后苹果提供以下API使得UI状态保持和恢复变得很容易了。 在iOS6中我们可以在3地方实现状态保持和恢复: 应用程序委托对象 视图控制器 自定义视图 为了演示这个功能实现,我们把基于故事板
2017-08-07 16:13:55
788
转载 利用 Disk Drill 导出 iOS App 沙盒中的数据
在 iOS 8 之前,我们想要导出 iOS App 沙盒中的数据是一件非常简单的事。只要利用 iTools之类的应用就可以随意查看 iOS App 沙盒中的所有数据,然后根据需要导出数据。但是在 iOS 8 开始,Apple 加强了对沙盒的限制,iTools 这些应用就没办法导出 iOS App 沙盒中的数据了。但是现在还是有办法来导出沙盒中的数据,只是步骤比原来要繁琐许多。我们知
2017-08-07 16:07:47
3305
1
转载 应用内检测手机锁屏,解锁状态
iPhone的锁屏监测分为两种方式监听:1. 程序在前台,这种比较简单。直接使用Darwin层的通知就可以了:#import #define NotificationLock CFSTR("com.apple.springboard.lockcomplete")#define NotificationChange CFSTR("com.apple.springboa
2017-08-07 16:02:14
828
转载 位运算技巧
1.获得int型最大值[cpp] view plain copyint getMaxInt(){ return (1 //2147483647, 由于优先级关系,括号不可省略 } 另一种写法[cpp] view plain copyint getMaxI
2017-08-07 15:30:51
260
转载 iOS长连接错误码
在做iOS 客户端 Server-Client项目的时候,需要Client登录和长连接。所以,网络和socket的问题,变得重要起来。在网上查阅找一些资料,供网友参考,下面是遇到的一些错误码: * Domain=NSPOSIXErrorDomain Code = 51 "Network is unreachable" * Domain=NSPOSIXErrorD
2017-08-07 15:21:29
1924
原创 iOS crash 信息符号
dwarfdump --uuid ST.Demo.app/ST.Demo app文件的版本号dwarfdump --uuid ST.Demo.app.dSYM dSYM文件的版本号Incident Identifier 崩溃标识符CrashReporter Key 设备标识符异常信息0x8badf00d 启动时
2015-12-21 09:43:51
422
转载 未读消息橡皮动画
先说一下大体的思路吧,控件是继承Button写的,并且在button的下面添加一个小的圆,给button添加拖拽手势,根据俩个圆的中心点算出拉动的距离,拖动的距离越大小圆的半径越小(勾股定理)这个动画最大的难点在画俩个画出俩个圆之间的不规则的矩形,通过下面的这个公式可以计算出俩个圆的直径上的四个点和中间的2个点的贝塞尔控制点的point,参照下面图片根据俩个圆的中心
2015-09-02 10:54:31
488
转载 Linux下HTTP Server
想在Linux下实现一个简单的web Server并不难。一个最简单的HTTP Server不过是一个高级的文件服务器,不断地接收客户端(浏览器)发送的HTTP请求,解析请求,处理请求,然后像客户端回送数据。在大多是情况下,(GET、POST命令),服务求回传给客户端的都是文件(HTML 文档, 图片,javascript脚本等等)。下面是一个极简单的HTTP Server的demo,虽然
2015-08-15 10:36:15
865
转载 @select延伸
各种语言都有些传递函数的方法:C语言中可以使用函数指针,C++中有函数引用、仿函数和lambda,Objective-C里也有选择器(selector)和block。不过由于iOS SDK中的大部分API都是selector的方式,所以本文就重点讲述selector了。Objective-C和我接触过的其他面向对象的语言不同,它强调消息传递,而非方法调用。因此你可以对一个对象传递任何消
2015-03-21 22:19:32
477
原创 NSPredicate
NSPredicate封装Object-c中的正则表达式,它是一个匹配条件,如:简单的查询一个对象的属性是否为指定值。此方法与硬编码与KVC相对的好处就是既然查询的属性Name并不存在,程序也不会Crash。 MyData *data = [MyData new]; data.name = @"jack"; NSPredicate *predicate = [NSPredic
2015-03-21 21:17:41
396
原创 KVC,KVO
NSKeyValueCoding 为 NSObject的category 所以所有NSObject的子类都具备下列方法;设置一个对象属性的值- (void)setValue:(id)value forKey:(NSString *)key;获取一个对象属性的值- (id)valueForKey:(NSString *)key;可使用带有path的方法以点运算符组
2015-03-20 00:53:39
346
原创 NSCopying,NSCoding
NSCopying protocol 实现对象复制功能,在对象接收到copy消息后copyWithZone会被调用,在此方法中应创建一个新的同类型对象,并且设备其所有属性后返回,创建该新对象时需要使用allocWithZone方法,该方法可以通过一个已经指定分配好的内存创建新的对象,即当以下方法被调用时内存已分配完毕,将通过NSZone对象封装传递过来。同样的有NSMutableCopying来处
2015-03-19 18:45:27
1383
原创 Automation 即测试相关
所有控件都可以设置以下属性用在automation中做为识别view.accessibilityEnabled = YES; // 打开automation中可见view.accessibilityLabel = @"name" // 为控件设置名字xib storyboard 中设有同样功能的面板可供设置var target = UIATarget.localTa
2015-01-27 22:53:14
557
转载 xCode工程设置
一、xcode4中的环境变量$(BUILT_PRODUCTS_DIR)build成功后的,最终产品路径--可以在Build Settings参数的Per-configuration Build Products Path项里设置$(TARGET_NAME)目标工程名称$(SRCROOT)工程文件(比如Nuno.xcodeproj)的路径
2015-01-07 00:16:33
1041
原创 xcode svn标识
M 文件在本地已经被修改,需要commitA 文件在本地已经被添加,需要commit? 文件脱离svn管理,需要使用add添加后再commit
2015-01-06 15:36:48
448
原创 U盘制作mac安装盘
10.10 U盘制作步骤 1,在app store里下载10.10的安装包 2,准备8GB U盘,进入磁盘工具将u盘更改为“Mac OS扩展(日志式)”格式,名称填写“Yosemite” 3,在 Finder 找到下载的 OS X 文件 4,右键点击安装包,选择“显示简介”,点开名称与扩展名,将此文件更名为 1.app 5,在应用程序中打开“终端”,执行“sudo -i
2015-01-06 09:33:03
569
转载 unix套接字
socket,涉及到的概念比较多,就不详细展开了。从编程角度简单的说,为了在客户端和服务器之间建立一个连接,服务器端需要依次调用这些函数:socket,获得一个socketbind,将获得的socket绑定到指定的地址和端口listen,让此socket进入等待状态,等待客户端的连接accept,当建立起与客户端之间的连接时,此函数返回代表此连接的socket。即类似于文件描述符,
2014-07-01 11:07:27
501
转载 unix线程机制
一个程序可以包含多个进程,而一个进程又可以创建多个线程,每个线程都共享此进程的上下文环境。在unix下使用gcc编译带有线程操作的程序时需要加上 -pthread选项。基本的线程函数:#include pthread.h>创建线程:后两个参数为待调用的函数及传递的参数int pthread_create(pthread_t *thread, cons
2014-07-01 11:05:59
492
转载 XMPPFramework环境搭建
关于XMPP的框架,以文本聊天为例,需要发送的消息为: message type="chat" from="kang@server.com" to="test@server.com">body>helloWordbody>message>helloWord基中from是从哪个用户发送的消息,to是发给谁的消息,XMPP的用户都是以邮箱形式。body就是我
2014-06-28 14:45:02
650
转载 uiview点击事件穿透
我们在有多个 UIView 层叠时,比如一个按钮被一个 UIView 遮盖时,想要在点击最上层的 UIView 时能触发按钮的相应事件,我们该如何实现呢,初步可以想到几种办法:1. 把按钮上层的所有 UIView 的 userInteractionEnabled 属性设置为 NO,要是 UIView 有自己的交互事件该如何办呢?而且这个 userInteractionEnabled 不能动
2014-06-07 09:48:13
5751
转载 CoreText实现图文混排和点击事件
本例子是实现类似于微博的富文本效果,可以实现图文混排和处理点击事件触发。使用CoreText进行图文混排的核心思想是把需要摆放图片的位置用空字符替换原来的字符,并且实现CTRunDelegate,用于动态设置空字符的高度和宽度(代表图片的大小),并且对这些空字符设置一个属性名来区别于其他CTRun,之后进行图片渲染的时候就能通过该属性来区分哪些空字符是代表图片的占位符,哪些是普通的空字符。使用Co
2014-06-03 13:12:30
572
转载 统一添加导航控制器右滑返回手势
一、新建一个控制器,继承UINavigationController 二、右滑手势代码01- (void)viewDidLoad02{03 [super viewDidLoad];
2014-06-03 11:48:11
659
转载 NSDate
1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 + (id)date; 返回当前时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间 + (id)dateW
2014-05-30 17:37:05
510
转载 利用runtime修改UINavigationItem的位置
#import @interface UINavigationItem (Spacing)@end-------#import "UINavigationItem+Spacing.h"#import #import @implementation UINavigationItem (Spacing)// load 在初始化类时调用,每
2014-05-26 12:25:49
474
转载 iOS蓝牙教程
http://developer.bluetooth.org/Pages/default.aspxCore Bluetooth for iOS 6CoreBluetooth的API是基于BLE4.0的标准的。这个框架涵盖了BLE标准的所有细节。仅仅只有新的iOS设备和Mac是和BLE标准兼容的:iPhone4S,iPhone5,MacMini,New iPad,MacBook Ai
2014-05-19 20:33:37
595
原创 iOS开发之屏幕自动适应高宽
UIViewController类的init方法创建的controller其中自带的UIView会自动根据当前屏幕的大小去初始化UIView的大小,无需程序员手动管理,如果当前管理器存在于tabbar或navigation,应该为UIView添加autoresizingMask = UIViewAutoresizingFlexibleHeight属性,让其自动调用高。如果UIView中有其它子控件
2013-12-19 12:01:06
914
翻译 IOS手势使用详解
UITapGestureRecognizer // Tap(点一下)UIPinchGestureRecognizer // Pinch(二指往內或往外拨动,平时经常用到的缩放)UIRotationGestureRecognizer // Rotation(旋转UISwipeGestureRecognizer
2013-10-26 11:52:45
484
原创 VIM系统命令
命令格式:命令动词 选项 参数ls -l -a 列出指定目录下文件 -l 显示文件的详细信息-a 显示目录下所有文件(包括隐藏文件)-d 显示指定目录cd 改变目录pwd 显示当前工作目录的路径. 当前目录.. 当前目录的上一级目录/ 根目录 / 目录分隔符./ 当前目录../ 回到上一级目录相对路径/绝对路径 凡是以/开
2013-10-26 10:59:52
661
原创 VIM快捷键大全
前言Vim是一个超级牛的编辑器,可以说是专为程序员设计的编辑器,强大的有些不可思议 。不过其学习曲线稍显陡峭,前两天在网上找到一个小图表,比较全,如果对表中所列的命令学习熟悉以后,处理日常的文本就已经足够,所以贴出来,大家参考参考。Vim的牛B之处不在于其功能之繁多,更不在于其学习曲线之陡峭,而在于这些命令大都可以进行组合 , 比如,9yy命令表示复制9行内容,9表示要复制的行数,同样10
2013-10-26 10:58:16
486
原创 c语言printf()输出格式大全
1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和doulbe) %e(%E) 浮点数指数输出[e-(E-)记数法] %g(%G
2013-10-26 10:56:53
807
原创 C语言32个关键字
C语言32个关键字auto : 声明自动变量 一般不使用 break: 跳出当前循环 case: 开关语句分支char : 声明字符型变量或函数 const : 声明只读变量continue: 结束当前循环,开始下一轮循环 default: 开关语句中的“其他”分支 do : 循环语句的循环体double : 声明双精度变量或函数 else : 条件语句否
2013-10-26 10:56:00
515
转载 C\C++命令规范
a Array 数组 b BOOL (int) 布尔(整数) by Unsigned Char (Byte) 无符号字符(字节) c Char 字符(字节) cb Count of bytes 字节数 cr Color reference value 颜色(参考)值 cx Count of x (Short) x的集合(短整数) dw DWO
2013-07-21 08:41:13
570
转载 C语言运算符优先级
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名
2013-07-19 12:47:24
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人