- 博客(55)
- 资源 (14)
- 收藏
- 关注
原创 一套基于NSPredicate的NSArray过滤框架
GHArrayFilter一套NSArray的过滤Api,底层利用NSPredicate实现基本函数where(keypath) :如果是字符串数组,传nil,否则传model类的属性名query() :最终的执行函数,每次查询结尾必须调用运算运算函数中可以传基本类型,其结果等同于NSNumber可以传char ,const char,char []
2017-04-01 02:15:24
677
原创 一套高仿Python的Objective-C API
GHFunctionCode根据python语言特点,编写的几个仿照python的apilist模块list_t ----> NSArray *mlist_t ----> NSMutableArray *[目前支持的api]join(str)->str lappend(id)->void mextend(list_t)->void minsert(id,in
2017-04-01 02:13:17
519
原创 将Objective-C变得简单————原创的模仿python的oc框架
自己封装了一个类Python的OC api,让开发的变得容易和简单NSString是这样操作的 str_t str = @"abcdef"; str = str.upper(); str = str.lower(); str = @"i have a dream"; str = str.title(); list_t list = s
2017-03-24 13:54:43
1215
原创 iOS开发者:其实你还有很多东西需要学
iOS 新特性总结(since iOS6)iOS 61、废除viewDidUnLoad收到内存警告需要到didReceiveMemoryWarning中处理【小技巧】-(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];//即使没有显示在window上,也不会
2016-11-17 17:14:48
5611
原创 IOS之字典转模型
iOS支持KVC,所以字典转模型变得超级简单。 我们希望我们写的字典转模型是通用的,这样我就想到用Category,加到Object里面。然后创建一个Category@interface NSObject (gh_dict)//添加两个方法 //第一个方法,是一个类方法,可以通过字典转换成对象 +(instancetype)gh_objWithDict:(NSD
2016-08-02 18:30:34
1167
原创 自己开发的一个Xcode插件
由于项目的长期迭代,很多图片已经不使用了,但是项目太大,我们无法知道,这样也会增大包的大小很多人都在问如何找到项目中,未使用的图片,所以我就开发了一款,找出项目未使用图片,并且可以删除。插件安装方法1、build插件项目,重启Xcode2、弹出一个警告窗口,点击“load bundle”3、Edit菜单会多出现一个选项,出现一个ClearUnUseImage的按钮4
2016-06-01 14:53:17
504
原创 开发效率提升百分百的秘密
工欲善其事,必先利其器。磨刀不误砍柴工。我们先磨磨刀。在实际开发中,Xcode相比eclipse有很多不尽如人意的地方,比如它不能自动导入头文件。自动提示有些鸡肋。代码注释不能像eclipse那样完善。不能生成父类已有的方法(eclipse有这个功能),这些不足之处,都会浪费我们一定的经历做一些重复性的工作。但是好在,Xcode支持插件开发,这就诞生了很
2016-05-23 13:31:28
3813
原创 ios之GCD学习笔记(3)
/* 15、void dispatch_suspend(dispatch_object_t object) 会令队列挂起,但并不意味代码不会执行,它会继续执行未完成的任务 ,但是未开始的任务将不会被执行 void dispatch_resume(dispatch_obje
2016-05-23 13:30:49
815
原创 ios之GCD学习笔记(2)
/* 10、void dispatch_group_enter(dispatch_group_t group); 该方法可以主动让未完成的block任务数字+1 voiddispatch_group_leave(dispatch_group_t group); 该方法可以主动让未完成的block任务数字-1
2016-05-23 13:30:06
498
原创 ios之GCD学习笔记(1)
//1、 dispatch_once_t 用法 static dispatch_once_t onceToken; //必须保证只有一个实力,才能确保只执行一次 dispatch_once(&onceToken, ^{ //单例代码 }); //2、dispa
2016-05-23 13:29:33
541
原创 IOS之日历与提醒
IOS利用EventKit可以实现添加提醒和添加事件(日历)的功能EKEventStore类该类负责日历和提醒事件的管理,可以简单理解为数据库,可以对事件进行增删改查。查询今天暂且不表,只说如何添加事件和提醒。 因为它就像数据库一样,频繁的开启,关闭会影响效率,所以如果你的程序需要频繁操作日历和提醒,建议仅生成该对象一次,仅用一个对象进行操作。@interface
2016-05-23 13:28:31
4283
原创 如何把运行期警告转移到编译期的几个小技巧
记得之前有篇帖子说过,应该尽量让运行期的错误,提升到编译期,这样就可以在编译时期解决错误,不需要在进行繁琐,费时的bug调试。但是在Objective-C中,我们如何做到呢。今天我就把我已经知道的一些ios的关键字和一些特殊的语法总结一下,以便大家来更好的优化代码,避免更多的错误。1、__nullable和__nonnull在Xcode6.3中,苹果引入了一个oc的
2015-11-23 14:08:06
700
原创 IOS程序员应该知道的一些第三方框架
IOS程序员应该知道的一些第三方框架改变你的开发效率Http协议AFNetworking基于NSURLConnection的一个轻量级的http协议框架。MKNetworkKit也是一个用户很多的网络框架Reachability可以监听网络状况SocketCocoaAsyncSocket使用CFSocket与runloop实现
2015-11-19 11:17:30
994
原创 23种设计模式之我见(1)
23种设计模式之我见(1)本文是我对设计模式的理解,旨在与大家分享心得,探讨心得。希望可以共同探讨。工厂方法模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。其实工厂模式,可以分成三种,简单工厂模式,工厂方法模式和抽象工厂模式。对于简单的工厂模式,其实有一个类方法(或静态方法就可以实
2015-11-18 11:52:44
602
转载 AFNetwork作用和用法详解
AFNetwork作用和用法详解AFNetwork是一个轻量级的网络请求api类库。是以NSURLConnection, NSOperation和其他方法为基础的。下面这个例子是用来处理json请求的:NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/globa
2015-11-18 11:44:56
628
原创 如何写程序(1)
本文是鄙人在学习《代码大全2》的一些心得和笔记,以及自己的一些理解,在此与各位码农,共同探讨和学习。我想先从如何写程序来深入浅出的讨论编程的一些事儿,现在我们一起开始吧。 这篇文章对应书的第六章的前面的部分,有兴趣的可以看下原著。1、如何应用ADT。1.1 ADT是什么?ADT其实就是将数据和操作联合起的集合,对于面向对象编程来讲,说白了就是类,对于非面向对象程序来讲就是结
2015-11-18 11:44:08
488
原创 IOS粒子系统的实现
IOS粒子系统的实现 IOS的CoreGraphic可以实现简单的粒子系统的效果我们来简单介绍一下,实现粒子系统其实非常简单,比较复杂的是其参数的设置实现粒子系统主要用到两个类CAEmitterLayer和CAEmitterCell 先介绍一下CAEmitterLayer(发射层)其主要的属性有@property(copy) NSArray *emitt
2015-11-18 11:43:12
1427
原创 IOS开发指南读书笔记12(IOS数据持久层的建立4)
IOS开发指南读书笔记12(IOS数据持久层的建立4) 建立CoreData需要首先建立一个模型文件生成的后缀是xcdatamodeid,但是编译之后在沙盒的momd文件首先Add Entity然后Add Attribute(注意,属性名必须是小写) 然后生成ManageObject建立CoreDa
2015-11-18 11:42:07
924
原创 IOS开发指南读书笔记11(IOS数据持久层的建立3)
IOS开发指南读书笔记11(IOS数据持久层的建立3)基于SQLite的数据持久的实现建立SQLite数据管理//sqlite数据管理@interface SQLiteNoteDao : NSObjectBaseNoteDao>{ sqlite3* _db; }#define DBName @"Notes.sqlite3" @end
2015-11-18 11:41:14
457
原创 IOS开发指南读书笔记10(IOS数据持久层的建立2)
IOS开发指南读书笔记10(IOS数据持久层的建立2)基于对象归档的实现建立对象归档数据管理类实现归档数据持久的对象实现NSCoding协议其属性也必须是基本类型或者实现NSCoding协议的对象我们堆Note做如下更改添加这两个方法-(void)encodeWithCoder:(NSCoder *)aCoder{ //编码
2015-11-18 11:40:10
468
原创 OS开发指南读书笔记9(IOS数据持久层的建立1)
IOS开发指南读书笔记9(IOS数据持久层的建立1) 建立IOS数据持久层,有以下几个方式1、文本文件 plist/Xml/Json/NSUserDefault(等同于plist)2、对像归档,反归档3、SQLite数据库4、Core Data1、Xml(略)、NSUserDefault(略)\Json略plist实现plist 根节点为NSArra
2015-11-18 11:39:22
580
原创 IOS开发指南读书笔记8(AutoLayout) 2
IOS开发指南读书笔记8(AutoLayout)其原理类似Android的RelativeLayout,适用于IOS6以上。如果不同约束有冲突,回遵循优先级的高的约束。一、可以设定的约束有1、高度、宽度至少,等于,至多一个数值至少,等于,至多为其他控件的宽度,高度2、对齐方式与父控件头部(左边Leading)对齐,尾部(右边Trailing)对齐,顶部对
2015-11-18 11:38:37
522
原创 IOS开发指南读书笔记7(ScrollView)
IOS开发指南读书笔记7(ScrollView)1、ContentSize 2、CotentInset 3、ContentOffset
2015-11-18 11:37:52
520
原创 IOS开发指南读书笔记6(UIView家族)
IOS开发指南读书笔记6(UIView家族) UIView家族 二、视图分类1、控件继承UIControl,能够响应用户高级事件。2、窗口UIWindow,一个IOS应用只有一个Window对象。3、容器UIScrollView,UIToorBar,UITableView,UICollectionView。4、显示视图UIImageView,UI
2015-11-18 11:37:05
724
原创 IOS开发指南读书笔记5(IOS 常用设计模式)
IOS开发指南读书笔记5(IOS 常用设计模式)1、单例模式构造方法@interface Singleton : NSObject+(Singleton*)sharedInstance;@property(nonatomic,strong) NSString* singletonData;@end@implementation Sin
2015-11-18 11:36:15
550
原创 IOS开发指南读书笔记4(IOS API分类)
IOS开发指南读书笔记4(IOS API分类) 1、IOS 体系架构2、Cocoa Touch层3、Media层4、Core Services层 5、Core OS
2015-11-18 11:35:23
460
原创 IOS开发指南读书笔记3(视图的生命周期)
IOS开发指南读书笔记3(视图的生命周期)1、视图的生命周期ViewDidLoad方法只会调用一次,而viewWillAppear:、viewDidAppear:、viewWillDisAppear:、viewDidDisAppear:回调用多次。低内存的情况下,IOS会调用didReceiveMemoryWarning:和viewDidUnload:,到ios6.0,
2015-11-18 11:34:33
507
原创 IOS开发指南读书笔记2(应用程序的生命周期)
1、程序的五种状态Not Running:未运行。Inactive:前台非活动状态。处于前台,但是不能接受事件处理。Active:前台活动状态。处于前台,能接受事件处理。Background:后台状态。进入后台,如果又可执行代码,会执行代码,代码执行完毕,程序进行挂起。Suspended:挂起状态。进入后台,不能执行代码,如果内存不足,程序会被杀死。2、五态的关系
2015-11-18 11:33:42
639
原创 IOS开发指南读书笔记1(Xcode的基本使用)
IOS开发指南读书笔记1(Xcode的基本使用)1、用Xcode创建工程Product Name:工程名字Organization Name:组织名字Company Identifier:公司标识。一般用域名倒叙。Bundle Identifier:捆绑标识,由Product Name+Company Identifier组成。发布到AppStore会用到它。Cla
2015-11-18 11:32:25
653
原创 IOS滤镜处理
IOS滤镜处理 需要InputBackgroundImage和InputImage的有CIAdditionCompositing 影像合成CIColorBlendMode 混合模式CIColorBurnBlendMode 燃烧混合模式CIColorDodgeBlendMode 避免混合模式CIDarkenBlendMode CIE
2015-11-18 11:31:47
1157
原创 Objective-C基础之常用简单设计模式
Objective-C基础之常用简单设计模式1、模型-视图-控制器(1)模型其实这是一个不是很想谈论的问题,这个问题经常被讲,都讲烂了,模型谁都会建立,但是最好与数据源匹配。模型类不要将控制器引入,这不是一个好的代码,因为我们希望它和控制器的耦合度尽量低。但也许会有一个委托,委托与控制器间通过协议进行关联,这样我们可不比指明控制器的具体类型,将会有好的拓展性,我们的模块具有相对
2015-11-18 11:30:31
675
原创 Objective-C 基础之强大的字面量
Objective-C 基础之强大的字面量Objective-C对字面量的支持其实是很到位的。看到C#的字典可以用[]来取值就觉得很爽,现在发现Objective-C也非常的不错,接下来说一说Objective-C的字面量。1、用字面量初始化字符串(NSString)一般我们初始化字符串都是这样写NSString* str = [NSString stringWithS
2015-11-18 11:29:41
586
原创 iOS-openGLES程序制作基本步骤以及某些API
最近研究了一下ios下的openGLES,给大家分享一下学习经验openGLES就是openGL的阉割版,就是作者删除了一些自认为没多大作用的API。openGL是啥,这里就不废话去讲了,我们直奔主题。我们做OpenGLES的ios开发必须导入两个框架QuartzCore.framework以及OpenGLES.framework(该框架的所有api都是c语言形式的)本文分
2015-11-18 11:28:14
1168
原创 Objective-C高级编程之内存管理(2)
混合ARC与非ARC一个app可以设置不同文件以不同形式ARC或非ARC进行混合编译。只需要在文件后面的编译标签上标注-fobj-arc/-fno-objc-arcARC修饰符当设置ARC有效时,其类型必须设定所有权修饰符,而所有权修饰符有4种__strong __weak__unsafe_unretained__autoreleasing可
2015-01-24 12:54:20
667
原创 Objective-C高级编程之内存管理(1)
1、什么是ARC顾名思义,自动引用计数是指内存管理中采用自动计数的技术。苹果官方文档:在Obj-C中,采用ARC,让编译器进行内存管理,就无需键入release和retain相关代码,可以降低崩溃和内存泄露风险的同时,很大程度减少开发的工作量。使用前提:Xcode 4.2以上 LLVM3.0以上 设置编译器ARC有效。2、RC的内存管理和思考方式有一个办公室,里面有
2015-01-24 12:12:00
661
原创 IOS强化知识(2)@class的运用
1、为什么使用@class 与C++语言一样,OC也需要一个头文件(h文件),一个实现文件(m文件)。当你引用其他类的时候,你就需要引入头文件。虽然引用头文件没有任何问题,但是如果你不想知道这个类的细节,只想知道它仅仅是个类的话,引用头文件可能显得多余,而且会增加编译的时间。用@class的话,你可以不引入任何头文件,就能让编译器知道某个它是一个类。例如: @cl
2014-10-24 22:07:18
1020
原创 IOS强化知识(1)认识Objective-C
一直想写一个整体的Objective-C的帖子,总是没时间,所以我想把大知识变小,小知识变更小,每天写一点点,来把自己学习的东西与大家分享,好了废话不多说。1、一门动态的语言OC Object-C(以下简称OC)是一门面向对象语言,这恐怕学过编程的人都知道。但是OC跟其他语言相比,显得格格不入。因为它是一门消息结构语言,而非函数调用。所以语法上显得很怪,通常是这样:
2014-10-22 22:08:03
715
原创 每天一个OpenGL程序 第六篇 图形的组合绘制
#include #include #include #include // 练习6.1 基本图形的组合绘制void render();void initGL();void main(int argc,char** argv){glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutInitWindowPosi
2013-08-26 09:42:09
2059
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人