自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

郭晓东的专栏

IT工匠——只为更精致的产品

  • 博客(257)
  • 资源 (17)
  • 收藏
  • 关注

转载 iOS 忽略SIGPIPE的问题

写网络程序时候, 当向对方write数据的时候, 如果连接断开(如对方主动close了连接), 会产生SIGPIPE信号, 还比如:往前调手机时间,启动APP联网立即崩溃,如果不对这个信号处理程序就会退出或者也可以说崩掉了, 所以一般简单处理就是忽略掉这个信号,signal(SIGPIPE, SIG_IGN);但是遇到一个诡异的问题, 用Xcode debug设备做并发测试的时候程序就会崩溃,

2016-01-21 18:45:09 2123

原创 浅谈iOS Push 在iOS6/7/8/9中的进化

简介        使用iOS 设备安装APP后,通常都会询问是否允许,一般情况下用户都会收到某APP的push。比如,用户收到一条微博,他们喜欢的球队赢了比赛,或者他们的晚饭准备好了,既然APP不在运行,所以APP不能检查这些事件。        push 消息走的APNs服务器,设备和APNs服务器之间建立了一个安全通道。关于push的原理,如下图,详细看这里那么经过iOS版本的进化,push交互和功能也在变化iOS6 iOS7 支持后台push,静默push。设备不显示,也不响铃,点击了解更

2016-01-07 11:15:59 2316

原创 php写的可以在本机发送iOS push程序

用于客户端,本机发push消息,把下面这段代码拷贝到文件以.php后缀名,和证书放到同一目录;ck.pem需要自己生成。具体步骤详见这里

2016-01-07 10:58:59 2191

转载 iOS7 Background Remote Notification(后台远程通知——静默push)

iOS 7在推送方面最大的变化就是允许:应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。

2016-01-06 16:27:40 12704

原创 xcode编译器问题——参数类型识别错误,EXC_BAD_ACCESS

根据栈提示,block参数有问题,后来仔细查阅;发现block定义没有问题。后来一个个参数定于,终于定位到site参数的问题。如果site参数传0,可以调用该函数,如果是1(非0)调用出现上面的崩溃。【推测】:xcode编译器可能把这个int当做指针或者其他类型了,导致后面的参数读取错误。【解决】:针对site参数。使用NSNumber代替NSInteger即可解决

2015-12-29 10:47:46 4873

转载 iOS NSNotificationCenter 使用姿势详解

就是在页面出现的时候注册通知,页面消失时移除通知。你这边可要注意了,一定要成双成对出现,如果你只在viewWillAppear 中 addObserver没有在viewWillDisappear 中 removeObserver那么当消息发生的时候,你的方法会被调用多次,这点必须牢记在心。

2015-12-24 16:47:21 1752

转载 介绍一个成功的 Git 分支模型(master - hotfix - develop - feature - release)

● master和develop并行。● master上始终是最稳定的代码,develop是正在开发的代码。● feature则是某个开发为了自己的功能拉的分支。不一般情况:● develop正在开发,如果你上线突然被拒绝了,这时候就要从master上开一个热分支,或者release分支也行,改好之后在分别合并到其他分支。但,本人感觉release通常意味着终止。别在从release上拉分支了。

2015-12-23 12:17:46 22715 3

转载 iOS Crash文件的解析(转)

本文转载自“一片枫叶”http://www.cnblogs.com/smileEvday/p/Crash1.htmliOS Crash文件的解析开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断。联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问

2015-11-27 18:49:14 1258

原创 各代iPhone iPad 内部代号 Hardware Model

https://www.theiphonewiki.com/wiki/Modelshttps://www.theiphonewiki.com/wiki/List_of_iPadshttps://www.theiphonewiki.com/wiki/List_of_iPhones#iPhone_7_Plus科普一下iPad的内部名字:iPad model Internal...

2015-11-17 14:48:30 15296 1

原创 使用(获取)Images.xcassets中的图片名,不能直接[UIimage ImageWithName:],应该这样

最新做一个项目,需要iOS默认启动图过后,再次使用启动图垫底,然后配合广告图进行一个动画。故最直接的办法就是使用Images.xcassets中的图片。然而,直接使用Images.xcassets中的图片名,再用[UIImage ImageWithName:]取不到图片??? 这是因为Images.xcassets会对启动图,进行二次命名。所以,需要获取Images.xassets的重命名后的名字(具体函数参考下面代码),再用[UIImage ImageWithName:]就ok

2015-11-05 10:52:43 3861 1

转载 直接把View Controller的view addSubview到另一个View,则不会调用viewDidAppear viewWillAppear

如果是直接把ViewController的view 通过addSubview添加到另一个View,则不会调用viewDidAppear,你需要手动发送viewDidAppear给这个View Controller。

2015-10-30 17:25:37 4163

原创 提交App Store ITMS-90474 iPad Multitasking support requires these orientations。ITMS-90032,ITMS-90475

本人项目,iOS 9支持画中画,用xcode7提交Appstore 遇到下列问题:ITMS-90032 "Invalid Image Path -No image found at the path referenced under key 'CFBundleIcons':'Icon-76.png'"ITMS-90474 iPad Multitasking support requires

2015-09-30 11:39:41 3997 2

转载 关于addSubView需要注意的几个点

addSubview:Adds a view to the end of the receiver’s list of subviews.译:增加一个视图到接收者的子视图列表中。- (void) addSubview:(UIView *)viewParametersviewThe view to be added. This view is retained by th

2015-08-13 18:05:17 1087

原创 使网页适应UIWebView的宽度

使网页适应UIWebView的宽度比较简单的做法是:在- (void)webViewDidFinishLoad:这个方法中,修改JavaScript的值:

2015-08-12 18:23:26 1549

原创 "Auto Layout still required after executing -layoutSubviews” iOS7上崩溃sdk缺陷

在iOS7系统上,我项目工程里写了一个CinemaMemberView,添加到一个viewController中,结果崩溃了。iOS8和iOS6上则不会崩溃。Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. CinemaMemberView'simplementat

2015-08-07 18:32:11 4614

原创 iOS6和iOS7处理push不同之处,解决重复push,-(void) application: didReceiveRemoteNotification: fetchCompletionHandl

3. 客户端被杀死的状态,进来push消息;滑动(点击)push消息调起客户端。● iOS 6调用 -(void) application: didFinishLaunchingWithOptions:带有launchDictionary,里面包含了push消息需要简单处理一下,获取真正的内容[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]● iOS 7以后调用两个方法:-(void) appl

2015-07-30 09:51:22 3971

转载 mac shell终端编辑命令行快捷键——行首,行尾

ctrl+a //移到行首ctrl+e //移到行尾===========linux系统用============alt+a //移到光标所在单词首部alt+e //移到光标所在单词尾部alt+d //删除光标处到单词尾部===============================ctrl+y // 插入最近删除的单词或语句ctrl+k //删除光标处到行尾部分

2015-07-27 13:30:43 26174

原创 判断汉字正则表达式更严谨方法!

正如网上流传的,判断中文的正则表达式,绝大部分是这么写的(OC语言):NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"[\u4e00-\u9fa5]"];/*判断是否为中文的正则表达式*/if([predicate evaluateWithObject:name]){ //是中文}else{ //不是中文}然而上面的正则表达式,逻辑上讲其实不太严谨:比如一些生僻字,它不能正

2015-07-20 14:22:41 13124 12

转载 堆和栈的区别 (转贴)

非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构

2015-07-17 19:05:00 1068

原创 URL参数基础知识

URL参数URL 参数是追加到 URL 上的一个名称/值对。参数以问号 (?) 开始并采用 name=value 的格式。如果存在多个 URL 参数,则参数之间用一个 (&) 符隔开。下面的示例显示带有两个名称/值对的 URL 参数:

2015-07-14 16:29:40 35061

转载 iOS: 如何正确的绘制1像素的线

一、Point Vs PixeliOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量。系统在实际渲染到设置时会帮助我们处理Point到Pixel的转换。这样做的好处隔离变化,即我们在布局的事后不需要关注当前设备是否为Retina,直接按照一套坐标系统来布局即可。实际使用中我们需要牢记下面这一点:One point doe

2015-06-29 10:30:00 3798 1

原创 Xcode调试技巧——观察变量值改变 watchpoint set variable

说一个很有用的Xcode调试技巧:观测某一个变量修改添加了一个观测点self->_test->_var 注意写法,一定要用->而且,要用下划线取得变量。不能用" . "。再配合条件断点,在某些情况下,调试起来非常有效:下面demo显示了:“在_var == 2的时候才断点”的用法

2015-06-08 14:43:58 12184

原创 获取iOS系统版本,谨慎使用[[[UIDevice currentDevice] systemVersion] floatValue]——【sdk缺陷】

获取iOS系统版本,谨慎使用[[[UIDevice currentDevice] systemVersion] floatValue]

2015-06-08 10:43:36 4615

原创 郭晓东的“系列博客,专辑”集锦

基础知识:字符编码的奥秘【专辑】,浏览其中一篇:字符编码的奥秘utf-8, Unicode《深度探索C++对象模型》【系列笔记】——对象模型、存储形式;默认构造函数一定会构造么?《深入理解计算机系统》【系列笔记】虚拟存储器,malloc,垃圾回收《PNG文件格式》PNG文件格式分析 iOS平台知识:iOS开始学习【系列博客】Objective-c 语法,继承,protocol和delegate(iOS学习笔记,从零开始)Objective-c高效编程【专辑】,浏览其中一篇:iOS 多线程

2015-05-25 13:07:08 1805

原创 《PNG文件格式》(二)PNG文件格式分析

PNG文件结构对于一个PNG文件来说,其文件头总是由位固定的字节来描述的,HEX: 89 50 4E 47 0D 0A 1A 0A使用ultra打开一个png图片,结果如下: 其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩余的部分由3个以上的PNG的数据块(Chunk)按照特定的顺序组成,因此,一个标准的PNG文件结构应该如下:

2015-05-25 13:06:07 18206 1

原创 《PNG文件格式》(一)PNG文件概述

一.概述PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生

2015-05-25 13:05:19 7574

原创 《PNG文件格式》(三)PNG文件实例剖析

[length] 00 00 00 0D 说明IHDR头块长为13[Chunk Type Code] 49 48 44 52 IHDR标识(就是ASIIC值)[Chunk Data]:下面13个字节,分别如下: (0-3). 00 00 00 28 图像的宽,40像素 (4-7). 00 00 00 28 图像的高,40像素 (08). 08 色深,2^8 = 256,即这是一个真彩色图像 (09). 06 颜色类型,带α通道数据的真彩色图

2015-05-25 13:05:04 6507 5

翻译 "iOS push全方位解析(三)【译文】"——一个极简的demo,并测试一下push

你的app可以设置具体是哪一种push,比如:UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];在AppDelegate.m中还要添加一个逻辑,来收到push通知- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDevic

2015-05-11 10:03:18 2521

翻译 "iOS push全方位解析(一)【译文】"——iOS PUSH概述

在iOS中,App在后台不能做太多的事情,仅被允许做一些有限的活动,这样电量寿命就得到了保护。但,如果某些感兴趣的时间发生,并且又希望让用户知道,即便用户并没有正在使用该App。 比如,用户收到一条新微博,他们喜欢的队赢得了比赛,或者他们的晚饭准备好了,既然App并不在运行,所以APP不能检测到这些事件。 幸运的是apple针对这些问题提供了解决方案。可以写一个服务端的组建来,替代客户端不停的检测或者在后台工作。 当意见感兴趣的事件发生,服务端组建可以发送一个push通知到这个app

2015-05-11 10:02:04 4804

翻译 "iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile

Provisioning Profile是和证书,Oh My!为了APP中push通知好用,app需要provisioning profile签名。另外,APP Server需要用SSL证书对push通知签名。provisioning profile和SSL 证书是紧密连接在一起的,并且仅对一个App ID可用,这么做可以保证只有你的app Server可以发送push消息到你的app而不是别人的APP。正如你所知,APP使用不同的provisioning profile用于开发和发布。同样也有两种p

2015-05-11 10:00:58 4181

原创 [@(value) description] 的妙用NSStringFromValue

开发中,经常会用到将int格式化成NSString,还在使用format(@"%d",int);那就过时了。【新用法】看下面宏定义:#define NSStringFromValue(value) [@(value) description]可以这么使用:NSStringFromValue( int 类型)NSStringFromValue( fload 类型) //long 型等,基础数据类型NSStringFromValue( c

2015-05-06 10:29:32 1580 1

原创 【block编程第二篇】 block捕获变量和对象

----------------------------------------欢迎查看block连载博客:【专栏】---------------------------------------【block编程第一篇】block语法                【block编程第二篇】block捕获变量和对象(当前)【block编程第三篇】block的内存管理。  【block编程第四篇】blo...

2015-04-27 18:50:59 5582

原创 【block编程第五篇】block中使用 weak–strong dance 技术避免循环引用

使用 weak–strong dance 技术block 可以直接引用 self,但是要非常小心地在 block 中引用 self。因为在 block 引用 self,可能会导致循环引用。如下例所示:

2015-04-27 18:50:19 4677

转载 http状态码204理解

HTTP的状态码有很多种,主要有1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类。平时我们接触比较多的是200、400、500等。这里我们主要讨论一下状态码204,在HTTP RFC 2616中关于204的描述如下:If the client is a user agent, it SHOU

2015-04-23 09:35:18 85225

原创 No submodule mapping found in .gitmodules for path 'modules/PushMsgCenter'

在使用sourceTree管理git代码的时候,创建了一个静态库。结果在push的时候,没有成功提示:No submodule mapping found in .gitmodules for path 'modules/MsgCenter'其中一个原因是,在创建静态库的时候,勾选了导致冲突了:

2015-04-17 10:31:47 9936

原创 Objective-C 给类别添加属性(通过@dynamic和objc_setAssociatedObject实现)

通过@dynamic和objc_setAssociatedObject,实现给类别添加属性,前者是说明程序员自己实现setter和getter,后者是动态给对象添加属性。两个配合使用可以实现给对象添加属性。下面代码以scrollview为例:头文件@interface UIScrollView (Refresh)@property (nonatomic) RefreshView * refreshView;@end源文件#import <objc/runtime.h>static cha

2015-04-16 09:40:36 3223

原创 Objective-C类方法中使用self注意事项

大家需要了解下面的规则:1,实例方法里面的self,是对象的首地址。2,类方法里面的self,是Class。类方法不可以使用实例变量,但可以使用self,因为self不是实例变量。此时.self是Class尽管在同一个类里面的使用self,但是self却有着不同的解读。在类方法里面的self,可以翻译成class self;在实例方法里面的self,应该被翻译成为object self。在类方法里面的self和实例方法里面的self有着本质上的不同,尽管他们的名字都叫self。

2015-04-14 09:36:53 7462

原创 双感叹号!!运算符的用法

因为C语言中,所有非0值都表示“真”。所以!非0值 = 0,而!0 = 1。双感叹号!!作用就是非0值转成1,而0值还是0.双感叹号!!是为了把"非0值"转换成1,而0值还是0。!!不难理解,举例:!!(expression) 等价于!(!expression)。如果express是一个指针,最终结果就是1.这样!!(expression)可以给bool变量赋值了

2015-04-08 19:05:06 8501

原创 UITableView上拉、下拉原理

tableView上拉、下拉原理。 TableView的上拉,下拉特效已经满大街都是了,也有很多第三方的代码。 这两天研究了一下其原理,先分享一下。这里以tableView的上拉为例,由于上拉操作的样式也很多,这里只介绍一种:在上拉tableView的时候,在tableView的bottom下面,添加一个view,该view可以自定义。我称这个view为pullView,pullView是动态的,如下图(该图仅展示了loading状态,另外在loading的位置,还有“上拉显示更多”、“松手

2015-04-08 09:31:41 2892

翻译 给iOS程序添加push代码

给iOS程序添加push代码 Adding Code for a Push Enabled iOS Application现在,我们开始开发项目,为了使该App能够接受push通知,我们需要对程序进行一些修改。We are now ready to start programming. We need to make a few modification to the app dele

2015-04-03 13:58:51 2103

build-protobuf-2.5.0.sh

Xcode 5 / iOS 7配置ProtoBuf脚本

2015-06-22

树tree、动态数组dyArray、hashMap、拼图算法

树:采用C语言实现 动态数组dyArray:采用C语言实现 hashMap,采用链表实现hash 拼图算法:采用二叉树结果拼图算法

2014-08-15

iOS平台ProtocolBuf说明

简单说明protobuf的使用,编码,使用!

2014-03-11

30行实现iOS下gif显示(xcode)

30行实现iOS下gif显示(xcode)完美实现gif的播放。

2013-11-05

core-data和sqlite3性能对比demo

◆ Core Data是一个功能强大的层,位于SQLite数据库之上, 它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互 ◆ 这样看来它跟Sqltie3在速度上是没有可比性的。Sqlite3肯定要快! ◆ 但是快多少?还有那些优劣,这是我们要研究的!

2013-06-18

volatile,nonatomic和atomic关键字测试

主要研究四种变量(属性)的存取速度. volatile nonatomic atomic和正常变量

2013-05-28

utf8,unicode,gbk,base64实现

utf8,unicode,gbk,base64实现,温习一下这个过程。

2013-03-25

urlencode urldecode实现

urlencode urldecode实现,在xcode里使用c++混编

2013-03-21

多叉树解析关键字,滑动引擎

利用多叉树解析关键字,另外还包括自制滑动引擎的实现。

2013-03-20

iOS 显示汉字的Unicode和UTF-8编码

iOS 显示汉字的Unicode和UTF-8编码

2013-03-10

网络传输文本,urlEncode和decode的实现。

网络传输文本,urlEncode和decode的实现。 在vs 2005上通过实验。

2013-03-04

ios 简单绘制文本,线条,图片,动画,按钮

ios 简单绘制文本,线条,图片,动画,按钮

2013-03-04

iOS Tableview

简单的Tableview,也就是我们平常用的list

2013-03-04

symbian v3 五子棋游戏——原创

经典游戏五子棋,Symbian s60 第三版。 绝对原创。 你不一定下得过它哦。 支持源代码开发!

2010-06-30

symbian半透明例子(原创,容易理解).rar

包含 1.在程序里使用直接引用汉字显示到屏幕。 2.图片半透明,按上下键查看效果。

2010-03-26

visual studio2005配置qt环境.doc

看看怎么在visual studio 2005上配置Qt运行环境。

2009-06-27

在VC下编译运行MiniGUI程序

经过 配置minigui可以在 visual studio 下运行

2009-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除