自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 iOS分类(category),类扩展(extension)—史上最全攻略

背景:在大型项目,企业级开发中多人同时维护同一个类,此时程序员A因为某项需求只想给当前类currentClass添加一个方法newMethod,那该怎么办呢?最简单粗暴的方式是把newMethod添加到currentClass中,然后直接实现该方法就OK了。但考虑到OC是单继承的,子类可以拥有父类的方法和属性。如果把newMethod写到currentClass中,那么current

2018-01-09 15:49:40 5762

转载 iOS使用GCDSocketManager实现长连接

OK,进入正题,开始今天的技术讲解。太概念的知识网上有很多,我只做概括和快速并正确的使用。Socket,即使用套接字连接,实际上是对TCP/UDP的再次封装。在一般项目中,使用Socket的情况很少,一般都会使用http实现客户端与服务器端的通信。并且是单向的。但http只能通过客户端向服务器端主动发送网络请求,服务器会对该次请求进行响应,回传给客户端一些数据。如果客户端不主动向服务器端发

2017-12-18 14:41:26 418

转载 iOS开发初级错误 Expression is not assignable

当我们想要修改CGSize,CGRect中的某个参数时我们会这样写:self.view.frame.size.height = 10.f;编译器会报错:'Expression is not assignable'这是因为self.view.frame是Objective-C语法,是读取view属性的frame属性,在Objective-C中使用点来访问属性只是一种语法糖,所以self.view.f

2017-12-14 09:57:41 733

转载 ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来

转载请注明出处:ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来1.1-ARKit物体跟随相机移动流程介绍1.2-完整代码1.3-代码下载地址废话不多说,先看效果1001.gif1.1-ARKit物体跟随相机移动流程介绍1.点击屏幕添加物体,已经在第三小节ARKit从入门到精通(3)-ARKit自定

2017-12-09 16:39:22 634

转载 ARKit从入门到精通(8)-ARKit捕捉平地

转载请注明出处:ARKit从入门到精通(8)-ARKit捕捉平地1.1-ARKit捕捉平地实现流程介绍1.2-完整代码1.3-代码下载地址在介绍完ARKit详细的工作原理以及所有的API之后,最令人期待的干货终于要来了!废话不多说,先看效果桌子上的绿萝太孤独了,给它来一个郁金香陪伴一下吧~0901.gif

2017-12-09 16:38:15 312

转载 ARKit从入门到精通(4)-ARKit全框架API大全

转载请注明出处:ARKit从入门到精通(4)-ARKit全框架API大全1.1-ARKit框架简介1.2-ARAnchor1.3-ARCamera1.4-ARError1.5-ARFrame1.6-ARHitTestResult1.7-ARLightEstimate1.8-ARPlaneAnchor1.9-ARPointCloud1.10-ARS

2017-12-09 16:36:55 368

转载 ARKit从入门到精通(3)-ARKit自定义实现

ARKit从入门到精通(3)-ARKit自定义实现转载请注明出处:ARKit从入门到精通(3)-ARKit自定义实现在上一小节中ARKit从入门到精通(2)-ARKit工作原理及流程介绍,我们完整的介绍了ARKit的工作原理,那么本小节我们就通过对ARKit工作原理的理解,手动的搭建一个ARKit虚拟增强现实环境1.1-创建一个简单的工程1.2-

2017-12-09 16:35:27 1230

原创 Xcode 9 系列坑

1.使用Xcode9 GM版本在代码不改动的情况下Apple Pay闪退。

2017-11-21 09:56:10 271

转载 你可能需要为你的APP适配iOS11

iOS 11 为整个生态系统的 UI 元素带来了一种更加大胆、动态的新风格。 本文介绍iOS11中在UI方面做了哪些更新,有些更新可以为用户提供更加完美的体验,但也有的可能会给目前的APP带来异常bug。前言前几天发现现在在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在ta

2017-09-21 09:29:37 2038

转载 iOS开发storyboard拖拽tableView: Static cells的使用

从 object library 中,拖拽一个 UITableView 到 main.storyboard的 UIViewController 中;  设置  table view 的类型为:  Static Cells。  设置的方法: 选中 tableview, 在 attributes inspector 中设置。  这时会报错。 原因是:  static tableView 只能潜

2017-09-04 11:19:07 1704

转载 iOS 开发 AVPlayer 深入浅出

首先介绍一篇AVPlayer 的文章:http://www.cnblogs.com/mzds/p/3711867.html然后我再写写我在实际项目中遇到的问题1. 然后监听playerItem的status和loadedTimeRange属性,status有三种状态 ==>这是原文中的话,但是后面列出的属性却是AVPlayer 的status(应该是作者笔误),其实AVPlayerIt

2017-08-02 13:58:31 20602

转载 Swift 3必看:新的访问控制fileprivate和open

在swift 3中新增加了两种访问控制权限 fileprivate和 open。下面将对这两种新增访问控制做详细介绍。fileprivate在原有的swift中的 private其实并不是真正的私有,如果一个变量定义为private,在同一个文件中的其他类依然是可以访问到的。这个场景在使用extension的时候很明显。class User { private var name

2017-08-02 10:16:52 2072

转载 Swift中的willSet与didSet

在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化无需说太多,看看下面的代码你就能很快明白的import Foundationclass People : NSObject{ //普通属性 var firstName:String = "" var lastName:String = "" va

2017-08-02 09:51:22 313

转载 FMDB

FMDB封装了SQLite3的方法,操作数据库变得很简单。增删改查变简单之后,那么问题来了,如何使用多线程优化对数据库的操作?这是我们的第一反应估计是dispatch_async().那么问题又来了,多线程操作如何防止database被lock?哇哈哈,这个时候就要用到FMDatabaseQueue。先来了解下FMDatabaseQueue的用法

2017-08-01 13:27:18 167

转载 iOS中UIScrollView的frame、contentSize、contentOffset和contentInset属性

IOS中UIScrollView的frame、contentSize、contentOffset和contentInset属性(1) frame            :是指scrollview的可视范围(可看见的区域)。(2)contentsize    :是其滚动范围。UIScrollView所有内容的尺⼨寸,也就是告诉 它滚动的范围(能滚多远,就滚多远) (3)con

2017-07-18 12:25:11 364

转载 iOS自动打包并发布脚本

本文最终实现的是使用脚本打 Ad-hoc 包,并发布测试,当然稍微修改一下脚本参数就可以打其他类型的 ipa 包了。另外该脚本还实现了将生成的 ipa 包上传至蒲公英进行测试分发。文中内容包括:xcodebuild 简介使用xcodebuild和xcrun打包签名将打包过程脚本化xcodebuild 简介xcodebuild 是苹果提供的打包项目或者工程的命令,了解该命令最好的方式

2017-07-17 13:59:48 835

转载 Xcode工程文件的格式说明

简介Xcode工程文件采用的是老式风格的plist文件(Next公司采用的格式,现在新的plist文件采用xml格式),它使用花括弧来组织结构化的数据。文件的开头是一个显式的编码信息,通常是采用utf8编码。这意味着它不支持带bom(Byte Ordering Mark)头的utf8格式文件,因为在开头的bom部分解析时就会失败。注意: 文档以下的部分只是基于 *.pbxproj 文件和元

2017-07-05 18:31:44 1545

转载 芒果iOS开发之NSComparisonResult比较结果

在学习NSString的时候,可能会经常遇到比较两个字符串的大小,系统已经提供了字符串比较的函数:[objc] view plain copy print?"font-size:24px;">- (NSComparisonResult)compare:(NSString *)string;               这个方法

2017-06-27 15:30:17 392

原创 iOS类别扩展无法识别添加方法

iOS类别扩展无法识别添加方法

2017-06-21 14:16:35 798

转载 【Objective-C Runtime动态加载】---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_

【Objective-C Runtime动态加载】---动态创建类Class动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法a.使用objc_allocateClassPair创建一个类Class    const char * className = "Calculator";    Class kclass = objc_g

2017-06-20 12:59:18 981

转载 <iOS>通过运行时来实例化一个,只知道名字的类, 名字为变量

如:得到一个NSString类型的变量x, 我们知道x是一个类的名字,比如可能是  UILabel, 也可能是UINavigationController,接下来我们需要实例化他们,如何做, 看看下面这几个案例。1.已知类名@"SomeClassName",初始化此类的一个实例:Class someClass = NSClassFromString(@"SomeClassName");

2017-06-20 11:23:11 989

原创 怎么判断ios越狱

http://blog.csdn.net/sakulafly/article/details/21159257

2017-06-13 09:51:49 254

转载 iOS关于armv7,armv7s,arm64,i386,x86_64

iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器)模拟器64位处理器测试需要x86_64架构,(iphone6以上的模拟器)真机32位处理器需要armv7,或者armv7s架构,(iphone4真机/armv7,      ipnone5,iphone5s真机/

2017-06-08 14:44:03 1891

转载 Xcode7 中创建类扩展文件

Xcode7 中创建类扩展文件这边对如何在Xcode7 中创建类扩展文件,做一个补充记录,因为在开发讨论群中还是见到不断的有童鞋在问这样子的问题。记得这是Xcode6 开始,类扩展文件的创建更Xcode5以及之前创建的位置改变了。这边我配图说明写下,之前也有关于类扩展的类似文字,具体可以参考我的另外一篇博文。类扩展参考文章这边还是我这边对NSString的一个扩展NSString+

2017-06-07 10:03:56 3585

转载 iOS中UIControl的介绍

UIKit提供了一组控件:UISwitch开关、UIButton按钮、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPageControl分页控件。控件是对UIView派生类的实用增强及补充,并可以直接附着于导航栏、表格单元,甚至更大的对象。这些控件的基类均是UIControl,而UIControl派生自UI

2017-06-06 19:12:45 294

转载 UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

layoutSubviews总结ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–- (void)se

2017-06-05 18:43:25 307

转载 iOS用户行为追踪——无侵入埋点

本文章系作者原创文章,如需转载学习,请注明该文章的原始出处和网址链接。  在阅读的过程中,如若对该文章有不懂或值得优化的建议,欢迎大家加QQ:690091622 进行技术交流和探讨。前言:  前几日做项目,需要做这样的一个功能:    记录应用Crash之前用户操作的最后20步  看到这样的需求,第一感觉就是有些懵,excuse me? 用户咋操作的我咋知道???应用啥

2017-06-01 16:45:43 5956

原创 iOS埋点

1.摘要 如果你的公司用户基数足够大,那么根据埋点数据分析得到的反馈是非常有用的。除了第三方的埋点数据分析,比如友盟,如果我们希望自己也存一份数据,作为对友盟数据的对比,在iOS工程中如何实现呢? 一般的埋点分为PV(界面级别的),PA(action事件级别).下边为了减少冗余,简称PV,PA。PV中的数据一般都是静态的,与业务逻辑不相关,比如进入时间,离开时间,是否进入该界面等等。

2017-06-01 16:29:05 3103

转载 推送跳转到指定的controllers

以前做过推送, 但只是那种最基本的广播推送(向所有安装appde设备通知), 列播组播这种对指定用户推送消息还没做过, 最近刚好有个项目,向指定用户推送物流信息、物品状态等等。于是前几天就和也没做过推送的后台干起来了,详情如下:我用的是友盟推送, 配置证书这一环节直接跳过了,这个网上有讲的。给大家讲一点常识,友盟推送分生产环境和开发环境。用手机刷上去的就是开发环境, 发布到苹果商店就是生产

2017-05-26 10:24:35 436

转载 [iOS] objc_setAssociatedObject objc_getAssociatedObject 简单明了的一个理解

关联    关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。    关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间    使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。    关联是基于关键字的,因此,我们

2017-05-23 15:31:05 442

转载 iOS工程中创建并使用一个SDK

这篇教程的主要目的是解释怎么样在你的iOS工程中创建并使用一个SDK,俗称.a文件。所以,不像其他网站上的教程只说一点比较吊的东西(就是我们这些新手看不懂的东西,这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤。环境:xcode 7.3(网上的demo大多数都是老版本的,发现很多东西跟现在的不一样)下面我们开始操作: 创建一个静态库工程 

2017-05-12 11:20:20 1044

转载 iOS 加密

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。上面的demo主要就是对比keychain和NSUser

2017-05-11 19:12:51 531

转载 NSSearchPathForDirectoriesInDomains详细用法

iPhone会为每一个应用程序生成一个私有目录,这个目录位于:/Users/sundfsun2009/Library/Application Support/iPhone Simulator/User/Applications下,并随即生成一个数字字母串作为目录名,在每一次应用程序启动时,这个字母数字串都是不同于上一次。 所以通常使用Documents目录进行数据持

2017-05-10 18:09:51 372

转载 UIView 解析

概述UIView对象在屏幕中定义了一个复杂区域和界面来管理这个区域的内容视图的职责:画图和动画。布局和子视图管理。事件处理。 1、创建一个视图对象CGRect viewRect = CGRectMake(10,10,100,100);UIView* myView = [[UIView alloc] initWithFrame:viewRect];

2017-05-09 14:42:38 268

转载 KVO模式具体运用细节

全称: Key Value Observing在iOS里,可以添加观察者模式,来实现某个property更改后,通知指定的类。然后到observeValueForKeyPath:ofObject:change:context:提供处理1 [object addObserver: observer forKeyPath: @"frame" options: 0 context

2017-05-08 18:49:11 217

原创 既然iOS原生支持二维码扫描了,为什么不用??

扫描二维码首先我们来想一想具体的步骤,大概流程应该是:1.打开设备的摄像头-->2.进行二维码图像捕获-->3.获取捕获的图像进行解析-->4.取得解析结果进行后续处理。这些流程需要用到AVFoundation这个库,注意导入。//获取一个AVCaptureDevice对象,可以理解为打开摄像头这样的动作AVCaptureDevice *device = [AVCaptureDe

2017-05-03 15:03:55 1689

原创 如何使用cocoapods集成ZXing以及编译问题处理

这两天一直在研究二维码。发现网上竟然没有关于用cocoapods集成ZXing的技术文档。很是无奈,集成进去之后,编译一直过不去,有好多问题。现在填坑。

2017-05-02 17:37:53 516

原创 ZXingObjc 使用初探究

1.首先用cocoapods集成2.首先创建扫描器,将其加载到主view中,设置扫描区域(本例中为一透明uiimageview),回调接收结果。#import "ViewController.h"#import #import @interface ViewController () ZXCaptureDelegate>@property (nonatomic,stro

2017-05-02 17:14:34 3659

转载 再见ZXing 使用系统原生代码处理QRCode

写文章 注册 登录首页下载App再见ZXing 使用系统原生代码处理QRCode作者 里脊串2015.10.09 15:28 字数 1980前言二维码每个人都一定不陌生 尤其是在支付宝和微信的努力下 相信每个人都或多或少的使用过"扫一扫"这个功能而作为开发者 大家都应该有过二维码的开

2017-05-02 17:01:27 939

转载 二维码iOS开发-二维码扫描和应用跳转

iOS开发-二维码扫描和应用跳转序言前面我们已经调到过怎么制作二维码(点我),在我们能够生成二维码之后,如何对二维码进行扫描呢?在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如ZXing或者ZBar。使用时集成麻烦,出错也不方便调试。在iOS7之后,苹果自身提供了二维码的扫描功能,从效率上来说,原生的二维码远高于这些第三方框架。本文讲解如何使用原

2017-05-02 15:08:26 4316

空空如也

空空如也

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

TA关注的人

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