- 博客(193)
- 收藏
- 关注
原创 golang了解
Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。第一点:package mainfunc main(){print("HelloWorld\n")}#includevoid main(){printf("helloworld\n");}跟C一样,g
2016-04-13 23:33:15
738
原创 iOS架构设计----1
在提到架构设计的时候,我必须先说清楚为什么要关注架构设计,这里我引用文章中一段话:“因为假如你不关心架构,那么总有一天,需要在同一个庞大的类中调试若干负责的事情,你会发现在这样的条件下,根本不可能在这个类中快速的找到以及有效的修改任何bug。当然,把这样的一个类想象为一个整体是困难的,因此,有可能一些重要的细节总会在这个过程中被忽略。如果现在的你正是处于这样一个开发环境中,很有可能具体的情况就
2016-01-13 14:45:36
857
转载 蓝牙4.0
一 项目背景简单介绍一下做的东西,设备是一个金融刷卡器,通过蓝牙与iphone手机通讯。手机端的app通过发送不同的指令(通过蓝牙)控制刷卡器执行一些动作,比如读磁条卡,读金融ic卡等。上几张图容易理解一些: 看了上面几张图,你应该大概了解这是个什么东东了。 二 IOS 蓝牙介绍 蓝牙
2015-09-24 11:53:39
533
原创 证书、描述文件、App ID的解释
本讲主要内容:1、什么是证书(P12文件)Certificates2、什么是Identifiers标示符3、如何添加Devices设备4、什么是描述文件Provisioning Profiles5、有兴趣的可以参考一下苹果官方文档App发布指南:点击打开链接前言:我们平时在开发过程中都是用模拟器在调试程序,但是想一些调用系统相机,
2015-09-17 08:56:50
1496
原创 通知中心
IOS中通知中心NSNotificationCenter应用总结一、了解几个相关的类1、NSNotification这个类可以理解为一个消息对象,其中有三个成员变量。这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。@property (readonly, copy) NSString *name;这个成员变
2015-09-16 16:50:25
635
原创 tableview的分割线设置
UITableView的分割线(separator)是私有类,应该是无法获取的。不过你可以通过tableView的属性修改它:123456789UITableView * tableView = [[UITableView alloc] initWithFrame:CGRectMak
2015-09-16 16:47:45
657
原创 iphone蓝牙
iphone和iphone之间不能直接通过蓝牙进行连接,但是通过安装第三方app实现蓝牙连接。iphone和macbook pro 等其他设备之间可以进行连接。实际测试下蓝牙4.0的传输速率大概在0.9Mbps,而AirDrop的测试速率在2.7Mbps左右,也就是说 AirDrop的传输 是 蓝牙4.0 的 3倍,并且稳定性更加高,所以苹果也是在主推让用户使用AirDrop。
2015-09-16 11:04:52
510
原创 JSONModel的使用
JSONModel, Mantle这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情。 感谢GitHub的开源精神。那我们开始吧。 先说说这两个的差别。这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地。 就我
2015-09-14 17:18:08
391
原创 SBJSON的使用
NSString *jsonStr = @"{\"name\":\"jia\",\"age\":\"24\"}"; NSString *jsonStr2 = @"[\"1\",\"2\"]"; SBJsonParser *jsonParser = [[SBJsonParser alloc] init];
2015-09-14 16:28:25
481
原创 iOS多线程GCD
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。dispatch queue分成以下三种:1)运行在主线程的Main queue,通过dispatch_get_main_queue获取。/*!* @function dispatch_get_main_queue** @abstract* Returns the
2015-09-05 22:38:47
342
原创 OC之i文件管理NSFileHandle
#import int main(int argc, const char * argv[]){ @autoreleasepool { NSString *homepath=NSHomeDirectory(); NSString *filePath=[homepath stringByAppendingPathComponent:@
2015-09-05 17:04:54
447
原创 UIKit框架类之窗口和视图架构介绍
窗口和视图窗口和视图是为iPhone应用程序构造用户界面的可视组件。窗口为内容显示提供背景平台,而视图负责绝大部分的内容描画,并负责响应用户的交互。虽然本章讨论的概念和窗口及视图都相关联,但是讨论过程更加关注视图,因为视图对系统更为重要。视图对iPhone应用程序是如此的重要,以至于在一个章节中讨论视图的所有方面是不可能的。本章将关注窗口和视图的基本属性、各个属性之间的关系、以及在
2015-09-05 17:03:43
514
原创 谓词
#import #import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { NSMutableArray *array=[NSMutableArray array]; for (int i=0; i<10; i++) { Perso
2015-09-05 17:02:41
384
原创 JSON解析
JSON介绍:作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式基于JavaScript的一个子集易读性略差,编码手写难度大,数据量小JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中1.解析格式说明:当数据结构为 {key:va
2015-09-05 17:01:49
351
原创 xml解析
1.XML简介:它是一种可扩展标记语言用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言易读性高,编码手写难度小,数据量大2.XML的两种解析方式1 SAX(Simple API for XML)只能读,不能修改,只能顺序访问,适合解析大型XML,解析速度快常应用于处理大量
2015-09-05 17:01:02
327
原创 NSURLSession的用法
NSURLSession是iOS7中新的网络接口,它与的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。如果用户强制将程序关闭,NSURLSession会断掉。 NSURLSession提供的功能:1.通过URL将数据下载到内存2.通过URL将数据下载到文件系统3.将数据上传到指定URL4.在
2015-09-05 16:59:26
368
原创 多线程原理和runloop介绍
一.线程概述有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断。直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样;圆如操作系统,一直运行直到你关机。 一个运行着的程序就是一个进程或者叫做一个任务,一个进程至少包含一个线程,线程就是程序的执行流。Mac和iOS中的程序启动,创建好一个进程的同时, 一个线程便开始运行,这个线程叫主
2015-09-05 16:58:32
436
原创 第三方库SDWebImage的使用
SDWebImage托管在github上。https://github.com/rs/SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。将SDWebImage类库添加入工程时,一定注意需要添加MapKit.framework,如图所示,因为MKAnnotationView+Web
2015-09-05 16:57:54
421
原创 Socket网络协议简单介绍和使用
Socket就是为网络服务提供的一种机制在Unix中,网络既是Socket,并不局限在TCP/UDP ,Socket可以用于自定义协议,例如:QQ通信的两端都是Socket网络通信其实就是Socket间的通信数据在两个Socket间通过IO传输Socket通讯流程图:socket通信的特点:使用Socket开发网络通讯在Web服务(WebServ
2015-09-05 16:56:38
598
原创 iOS远程消息推送
苹果提供了一堆服务器,每个ios设备和这些服务器保持了一个长连接,ios版本更新提示、手机时钟校准等操作都是通过这个连接实现。消息推送服务简称为APNS(Apple Push Notification Service),是该长连接中的一个服务,如果要向用户发消息,必须通过APNS进行中转。消息推送不支持群发,只能一个一个发,消息包一般由两部分组成:标示用户手机的id(32个字节)+消息体(
2015-09-05 16:55:28
435
原创 iOS第三方支付(支付宝SDK)
现在不少app内都集成了支付宝功能,因此对于iOS开发人员来说,也应该熟悉第三方支付关于安全支付的流程,支付宝的文档里有个很好的图数据流程使用支付宝进行一个完整的支付功能,大致有以下步骤:与支付宝签约,获得商户ID(partner)和账号ID(seller)下载相应的公钥私钥文件(加密签名用)下载支付宝
2015-09-05 16:54:19
595
原创 iOS8新特性
1.UIAlertController (ios8)UIAlertViewUIActionSheet2.UISearchControllerios8之前UISearchDisplayController + UISearchBar;3.WKWebView iOS8 iOS 8之前的UIWebview/* http://go.rss.sina.co
2015-09-01 11:33:24
441
原创 block的简单使用
#import int main(int argc, const char * argv[]) { @autoreleasepool { int (^sum)(int, int) = ^(int a, int b) { return a+b; }; int a = 2, b = 3;
2015-09-01 11:10:44
347
原创 NSLayoutConstraint约束
相信ios8出来之后,不少的ios程序员为了屏幕的适配而烦恼。相信不少的人都知道有AutoLayout这么个玩意可以做屏幕适配,事实上,AutoLayout不仅仅只是一个为了多屏幕适配的工具,它真正的意义所在是给了程序员一种全新的布局思想。 本文主要依据真实项目实例从三个方向全方位讲解AutoLayout的使用大全。 一。AutoLayout布局原理和语法 二。约束
2015-09-01 10:53:01
623
原创 类的静态方法去作为自己的工具类(系统工具交互的功能需求)
在项目开发中,经常避免一些与系统工具交互的功能需求。比如说开启蓝牙,开启相机,通讯录功能,还有数据加密等等。 由于这些功能的实现没有实例化的必要,并且又是许多项目都共用的功能,所以一般我们会作为类的静态方法去作为自己的工具类。 以下是一段将字典的键值对导入通讯录的静态方法代码。 假如说现在有一个这样的逻辑流程,C层按钮交互,将页面某个数据加密导入通讯录。 让我们以
2015-09-01 10:40:07
564
原创 iOS开发中经常遇到的问题及解决办法1
1、imageView上的按钮无法点击UIImageView默认没有交互。_imageView.userInteractionEnabled = YES;2、图片显示不出来的时候,用以下解决办法 [button setImage:[[UIImage imageNamed:[NSString stringWithFormat:@"tab_%d",i]]imageWithRende
2015-08-30 17:25:43
493
原创 xcode的快捷键
隐藏xcode command+h退出xcode command+q 关闭所有窗口 command+option+w 关闭当前项目 command+control+w 关闭当前文件 command+shift+w 保存文件 command+s 保存所有文件 command+option+sCMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O: 打开CM
2015-08-30 17:20:25
376
原创 导航控制器的原理
导航控制器UINavigationController维护了一个数组,数组里面存放的是视图控制器,视图控制器之间的跳转是通过压栈和出栈的方式实现的。 当我们创建了n个视图控制器,相当于有n个视图控制器进栈,栈里面存放的视图控制器是由顺序的,当我们想要从第n-1个视图控制器跳转到第n-5个视图控制器时,第n-5个视图控制器之后的控制器必须先出栈,然后才能跳转到第n-5个视图控制器。
2015-08-28 09:58:51
922
原创 取消tableViewCell的选中状态
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.selected = NO; [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
2015-08-27 20:56:26
660
原创 iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
XCode工程目录里面,有时你会发现2个不同颜色的文件夹,一种是蓝色的,一种是黄色的,最常见的是黄色的,我也是最近学习html5的时候,发现还有蓝色的文件夹呢,来上图看下吧 上图所示,蓝色的是folder 黄色的是group。 那么它们有什么区别呢?1. group 和 folder的区别group 一般只在你的工程中是文件夹的形式,但是在本地的目录中还是以散乱的形式放在一
2015-08-27 16:57:57
656
原创 message sent to deallocated instance
在XCode的以前版本中,如果遇到了1message sent to deallocated instance 0x6d564f0我们可以使用info malloc-history 0x6d564f0来查看调用堆栈来查看崩溃发生的地方,这种方法这里不作阐述,大家自行百度。在新的XCode里,调试器默认使用LLDB,
2015-08-27 15:57:39
510
原创 exc_bad access code=exc_1386_gpflt
iOS开发中经常遇到这样的一个bug:exc_bad access code=exc_1386_gpflt。这样bug通常情况下就是内存管理方面的问题。一般是访问了已经释放的对象导致的,可以开启僵尸对象(Zombie Objects)来定位问题:在Xcode的菜单:Product->Scheme->Edit Scheme->Run xxx.app右边的选项中,选中E
2015-08-27 15:56:34
1070
原创 Unknown class xxclass in Interface Builder file
今天在学习iOS中遇到了这个错误“Unknown class xxclass in Interface Builder file” error at runtime是我在使用xib的时候发生的,并且是我从另一个项目中复制过来的搜索后才发现,我xib中的label的类属于我复制项目中的名字,而我复制过来之后是把名字改过的。
2015-08-27 15:05:51
753
原创 strong,weak, retain, assign的区别
strong与weak是由ARC新引入的对象变量属性 xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的。xcode 4.3(ios5和以上版本)之后就有了ARC,并且开始使用 strong与weak assign: 用于非指针变量。用于 基础数据类型 (例如NSInteger)和C数据类型(int,
2015-08-27 11:35:40
495
原创 关于属性,成员变量的认识
关于属性和成员变量概念的说法,网上搜了很多,没找到特别明确的说,而且还更加混乱了。根据自己的认识和从网上搜索的信息稍微总结一下:看法1、从访问权限上区分属性和成员变量说到底都是变量,只是他们的访问权限不同。在.h文件的{}中声明的变量,默认是protect在.m文件的interface(){}声明的变量,默认是private在.m文件中声明的变量,在其他类中不可以调用;
2015-08-27 11:14:16
864
原创 指针做形参做局部变量以及内存分配
一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。指针传递的是一个变量或者一个值的地址,但是它本身还是采用值传递的方式。即你不能使它指向另外一块地址,但是你可以改变它指向的空间里存的值。二级指针做形参:二级指针也是传值,但是他指向的地址是个一维指针,所以可以改变二维指针指向的地址空间里的内容也就是要申请空间的一维指针,不能改变二维指针本身的值,
2015-08-26 17:55:29
523
原创 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放
2015-08-26 17:43:20
797
原创 static作用(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global va
2015-08-26 17:41:01
555
原创 面试题9
12、iOS中对象之间有哪些通信方式代理delegate、block、通知、KVO13、block在内存管理上的特点、需要注意循环引用,如何解决循环引用(1)block块中使用了局部对象,则会将此对象retain,引用了当前对象的属性或方法,则会将当前对象retain(2)解决循环引用:将当前对象赋值给一个局部变量,并且使用__block关键字修饰该局部变量,使用该变量访问当前对象
2015-08-26 17:21:47
539
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人