- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 UIViewController中addChildViewController的坑:viewWillAppear不调用
项目中有一个需求是,需要在一个父UIViewController中,加载一个子ViewController。我这里是用的方式是: [self addChildViewController:_baseVC]; [self.view addSubview:_baseVC.view];这里有个坑就是:子viewcontroller的viewWillAppear不会被调
2016-09-02 15:31:06
2574
原创 UITableView性能优化之cell的高度缓存
复杂的feed流通常是cell的高度不固定的,比如微博,微信,它们的高度需要根据内容计算的。滑动的时候动态计算肯定会影响速度,所以最好的做法是,在获取到数据的时候,就能计算所有cell的高度然后缓存起来。在heightForRowAtIndexPath方法里,只是根据indexpath去取高度就行了。但是,这就要求我们实现只是根据数据就能计算cell高度的接口。如果,你不想实现这个接口,或者实
2016-09-02 12:21:59
803
原创 UITableView性能优化之estimatedHeightForRowAtIndexPath
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath这个方法是iOS7之后增加的,作用就是优化UITableView的性能,确切的说就是减少UITableView加载时的时间。原理:这个方法之所以能起到优化作用原因在于-(
2016-02-16 16:01:31
4485
原创 git命令学习笔记
来了新公司,不能用sourceTree了,只能用命令行了。之前习惯了可视化操作,对于命令只是略知一二,没办法从头开始学习咯!!!本人新手写错了,一定请大家留言指正!!从常用的学起:1.git diff和git status提交代码前得先确认做了些什么改动吧。git status查看当前状态:一目了然,然后查看做了什么改动:git diff,按enter查看下一行,按
2016-02-05 16:21:50
511
原创 UIView各种属性解析!
UIView作为iOS中界面元素的基类,几乎所有应用中的所有可见元素都是基于UIView的!学习iOS的UI,得从UIView学起!!!1.关于位置和大小@property(nonatomic)CGRect frame;frame表示UIView的位置和大小,其中位置是以左上角为锚点的@property(nonatomi
2016-02-04 15:33:26
475
原创 UIView的动画 Animation
我们可以运用UIView的动画(Animation)来实现一些UI的动画效果。这对于用户体验和引导用户使用有很好的作用。基本的动画变化:1.位移:通过改变view.center的值来实现 self.blueSquare.center.x = self.view.bounds.width - self.blueSquare.center.x2.放大缩小:通过view.tr
2016-01-04 19:20:34
509
原创 Objective-c的kvo和kvc
kvc(key value coding),键值编码,提供一种间接访问属性的方法,而不通过setter和getter函数(破坏了封装)kvo(key value observer),键值观察,观察者模式,在键值改变的时候观察者会得到通知。基于kvc的
2015-12-14 22:44:32
374
原创 objective-c的ARC机制,strong和weak
ARC是iOS5后引入的,这是编译器特性而不是OC的语言特性。ARC的实质就是由编译器自动实现retain,release,dealloc。其实质还是引用计数,只是我们不需要显示的去调用引用计数相关函数而已。在ARC后有四种所有权修饰符:__strong,__weak,_unsafe_unretained,_autoreleasing。__strong表示强引用,可
2015-11-30 11:38:14
522
原创 Objective-c利用runtime给对象添加一个变量:objc_setAssociatedObject(关联)
利用objc_setAssociatedObject可以在不改变类结果的情况,为类增加一块内存,存放一些变量。方法很简单,只要为你增加的变量设置一个key就行了!同时需要设置变量的赋值方式比如说,retain活着assign,或者是否automiticNSString* myStr = @"string"; const char* key = "key"; NSArray*
2015-11-23 12:14:42
628
原创 Objective-c的block(块)
block的定义语法类似C中的函数指针,在别的文章里看到一张图很形象:与定义函数指针相比只是把*换成了^而已。个人理解,block其实就是一种函数形式,只是在OC中给赋予了一些别的意义。其实block也通常作为回调的。block相对于OC中的方法,不同的是,它可以定义在方法体里。它被定义后可以做为参数,或者像变量一样赋值。也可以直接运行比如:blockname();
2015-11-20 17:50:23
411
原创 Objective-c的copy和mutableCopy
NSObject实现了两个协议NSCopying和NSMutableCopying@protocol NSCopying- (id)copyWithZone:(NSZone *)zone;@end@protocol NSMutableCopying- (id)mutableCopyWithZone:(NSZone *)zone;@end使用copy等到的都是不可变的
2015-11-19 16:20:33
357
原创 Objective-c的category(分类)和Extension(扩张)
1.Category(分类)可以为已有的类添加新的方法在Objective-c中给已有的类添加新的方法,除了继承,还有一种更简单的方法,那就是Category(分类)。(分类只能添加方法,不能添加新的成员变量)Category的定义:@interface ClassName (CategoryName) @end比如我要给XYZPerson定义一个分类XYZPersonName
2015-11-18 11:09:48
369
原创 Objective-c的@property,属性介绍
使用@property可以定义变量的setter和getter方法,再通过@synthesize实现setter和getter方法使用@proerty时可以选择属性,主要分为以下几类:1.可读可写性:readonly | readwrite;这个很容易理解,readonly只定义getter方法而不定义setter方法。2.setter属性:assign | retain | co
2015-11-15 14:27:03
343
原创 Objective-c的instancetype和id
结论:在能用instancetype的时候应该尽量使用instancetype来替换id。id是一个指向Objective-c中的class的实例对象的指针,通用类型。可以作为函数的返回类型,或者其他地方作为一种类型。typedef struct objc_object { Class isa; } *id; 而instancetype只能作为函数返回值。从名字上就能看出i
2015-11-03 13:57:23
397
原创 Objective-c的多态
Objective-c中不支持严格的重载(voerload),但是支持对父类的重写!也就是说同一类中不能有相同方法名的方法,即使同名方法不同类型的参数也是不行的。这一机制我猜测是跟OC中存储方法是以SEL格式存储,而SEL是通过@selector(func)生成的。SEL是根据方法名生成的,所以如果有两个同名的方法就会有歧义。仅仅是猜测,因为现在对OC的具体机制还不是特别清楚。Ob
2015-11-01 12:11:51
446
原创 Objective-c的协议protocol
Objective-c是单一继承,好在它是支持协议protocol的,而且是支持多个协议!对比C++学习,其实就是C++中的虚基类,唯一的不同是虚积累中如果有纯虚函数,那么继承了虚基类的C++类必须去实现纯虚函数。而OC中的protocol不是必须实现的。
2015-11-01 11:06:56
575
原创 Objective-c的成员变量访问权限
Objective-c中有类似C++中的@private,@protected和@public的声明成员变量的访问权限的关键字!功能和C++中的一样:@private:只有的类中,可以访问。@protected:只有本类和子类中可以访问。@public:本类,子类,和类外都可以访问。但是在Objective-c中,这些关键字只能用来修饰成员变量,而不能用来修饰方法。所以
2015-11-01 10:54:40
805
原创 cocos2d-x,CCArray源码学习
看了一下cocos2d-x中的CCArray源码!大多数代码可以很容易理解的,我对插入和删除的实现比较感兴趣,所以重点看了一下!首先看看CCArray的主要数据结构:typedef struct _ccArray {unsigned int num, max;CCObject** arr;} ccArray;一个指针数组,一个当前数量和一个最大数量。所以CC
2015-07-13 14:39:37
438
原创 C++学习--函数重载(overload)的简单总结
C++函数重载的条件总结:1.只是返回值不同不能重载。 2.如果函数中有默认参数时需要注意:void fun(int a,int b = 2 );void fun(int a); 此时不能构成重载,调用fun(2);时,编译器找不到具体哪个函数。 3.const和非const函数可以构成重载。如果调用函数的对象是const变量就调用const
2015-03-08 16:52:04
576
原创 C++学习--static函数,内联(inline)函数, 友元 (friend) 函数
简单总结一下C++中的各种特殊函数1.static成员函数定义在类体中,定义时在前面加static关键字:class Test{static void getID();}static 函数属于类,但是不属于类的任何一个对象,不能访问类的成员。一般的成员函数都有隐含的this指针,但是static成员函数没有。因为static成员函数不是任何对象的组成部分,所
2014-12-06 15:10:27
1308
原创 Xcode定义Preprocessor Macros,编译宏。
假如工程中,有iphone和iPad两个相同target。要实现在iPhone和iPad的同一个程序块,不同的逻辑。这里就可以用到Preprocessor Macros了。只要把你的宏加到Preprocessor Macros里就行了。
2014-03-11 15:52:50
3446
原创 Mac下搭建Sublime+lua开发环境
lua是当下游戏或者web开发中,一种非常流行的脚本语言。现在要再Mac下搭建lua的开发环境,并且使用Sublime作为lua的编辑器。一,首先安装luaMac下安装lua非常方便,可以先安装Homebrew。命令行输入:sudo sucurl -L http://github.com/mxcl/homebrew/tarball/master | tar
2014-01-04 13:43:03
3596
原创 ios开发,查看APP打包后的大小
在APP打包之前想知道它的大小可以,选product下的archive。这可能需要等1分钟,然后出现organizer。点estimated size后的结果得到大小就是接近你打包之后的大小了
2013-07-05 18:23:29
3970
原创 cocos2d-x中实现委托和代理
2d-x是用c++写的。如果在2d-x中想实现objective-c那样的委托(protocol)和代理(Delegate)的话,可以用一个基类来实现。比如定义一个购买的protocol:class InAppPurchaseProtocol{public: virtual ~ InAppPurchaseProtocol(){};// 购买成功
2013-07-04 12:33:21
220
原创 github存在错误的未commit文件
今天在项目里,添加了一个.png文件,后来发现没用,又给手动删除了。但是在commit的时候却还有这个文件,标注是A,也就是新增加的。discard changes也不管用。提示:This operation cannot be undone后来在命令行里,进入工程目录。然后git commit -a -m "commit error file"。希望通过命令强制commit。但是结果是:
2013-07-03 14:51:42
1074
原创 cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。
游戏UI中为了使字体更加漂亮,通常需要为字体添加一个阴影。其实不用美工,程序就可以添加。先为CCLabelTTF创建一个CCRenderTexture:CCRenderTexture* CCLabelTTFWithStroke::createStroke(cocos2d::CCLabelTTF *label,float size,ccColor3B cor){//目标label
2013-06-21 18:12:56
2802
原创 cocos2d-x关于CCTableView的“乱序问题”的理解
Cocos2d-x有一个不错的控件CCTableView。之前用的时候发现有cell的顺序错乱和重复出现的问题。后来仔细看了一下源码,发现是自己用法错误。但是网上有人说是一个bug,要改源码。我发现2.04以上的源码都是没问题的。先来看看网上说的改源码是怎么样改的:CCTableViewCell *CCTableView::dequeueCell(){ CCT
2013-06-21 16:30:43
3056
1
原创 iOS开发,用代码输出设备的当前使用内存和剩余内存
xcode的内存检测工具有时候会不准。用代码输出适时的内存情况是一个Debug的好方法。以下两个方法输出当前已经使用内存和剩余内存:// 获取当前设备可用内存(单位:MB)double UtilityTools::availableMemory(){#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) vm_sta
2013-06-19 10:45:17
2541
原创 iOS游戏开发中粒子系统的纹理的颜色混合模式
iOS游戏开发使用中的粒子系统,以前一直不知道要如何使用原本的纹理而不对纹理本身的颜色做透明或者变化。今天研究了一会,虽然不知道里面的原理,但是只是能用了就是在混合的时候使用以前两种模式
2013-06-08 19:26:57
1259
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人