自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苹果君的工作室

我也一直在努力

  • 博客(46)
  • 收藏
  • 关注

原创 Can't add self as subview

iOS7刚发布的时候,总是出现这个 Can't add self as subview  的崩溃,团队内部没出现过,但是外部用户的crash频频上报这个崩溃。

2014-06-01 11:37:55 19568 10

原创 [iOS] ViewController的生命周期及其加载View的步骤

首先先阐明ViewController的职责:对内管理与之关联的View,对外跟其他ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任。理解ViewController的LifeCycle(生命周期),能够有效地管理应用资源。ViewController的初始化

2012-03-03 12:17:24 31554 1

原创 dispatch_get_current_queue 废弃

由于iOS7以后 dispatch_get_current_queue 被废弃,所以需要寻找一个替代的方案。发现 dispatch_get_current_queue 并没有字面上那么简单。这个函数一般都会跟 dispatch_async 等API配合,但是试想一下,我们自己创建的线程(比如 NSThread)跟 dispatch_queue_t 没有关系,那么在我们的线程中调用

2013-08-01 13:42:17 6393 1

原创 不使用 symbolicatecrash 解析崩溃堆栈

如果 使用 symbolicatecrash 解析崩溃堆栈 不起作用,可以通过以下方式看看符号文件和堆栈是否是对应的:        dwarfdump --uuid xxx.app        dwarfdump --uuid xxx.app.dSYM        grep "0x.*com.wihing.xxx .*    如果输出一样的uuid,那么就是对应的,此

2013-06-04 15:19:48 3323 2

原创 UIView的alpha属性和hidden属性

alpha 属性为0.0时视图完全透明,为1.0时视图完全不透明。hidden属性为YES时视图隐藏,否则不隐藏。注意事项:1 当视图完全透明或者隐藏时,不能响应触摸消息。也就是alpha等于0.0或者hidden为YES的时候,但是当alpha2 视图的alpha值会影响子视图的绘制,但是子视图的alpha值不变。文档的原文:This value affects only

2013-04-27 16:06:56 3271

原创 viewDidUnload 和 viewWillUnload 被废弃之后的内存警告处理

由于iOS6以上的UIKit不会在内存警告时自动释放视图,所以viewWillUnload和viewDidUnload将不再触发。因此,在iOS6上,开发者需要负责内存警告时将不用到的视图释放。WWDC2012的视频有提到,具体代码如下:- (void)didReceiveMemoryWarning { if ([self.view window] == nil) {

2013-04-07 21:31:01 4970 1

原创 使用 symbolicatecrash 解析崩溃堆栈

确认Xcode的环境/usr/bin/xcode-select -print-path结果应该是:/Applications/Xcode.app/Contents/Developer/如果结果不是上述的路径,则指定一下路径:sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/准备好解

2013-03-29 20:31:28 4533

原创 WWDC 2012 Session 221 iOS User Interface Design (iOS 用户界面设计)

Bad App Icon (不合格的应用程序图标)     好的应用图标能够抓住用户的眼球,让你的应用在海量的应用中脱颖而出。比如在App Store上搜索应用时,呈现的结果中图标占了很大的排版比例,并且用户喜欢看图片多于文字。所以用户会不会对你的应用感兴趣取决于应用的图标。     instantly recognizable (容易辨认)          1 focus on a

2012-09-06 19:50:19 2518

原创 属性在viewDidUnload中设nil,在dealloc中却release

如题,代码如下:- (void)viewDidUnload { self.xxx = nil;}- (void)dealloc { [xxx release];}        属性在viewDidUnload中用点运算符设为nil,在dealloc中却直接调release,都有其理由。    考虑到现在网上很多误导人的解释,决定记下来。        总结之前我在st

2012-05-11 16:59:10 3165 4

原创 《View Programming Guide for iOS》笔记

View and Window Architecture1 每个View的背后都有一个Layer负责渲染。Layer的渲染一般由Core Animation完成,并最终由更底层的硬件缓冲区保存屏幕上的每个点。2 从视觉上看,子视图会遮住父视图的一部分或者全部。就是说,子视图的zorder一定比父视图大。3 父视图的某些改变会影响到子视图,比如 resize,hide,alpha,t

2012-03-19 17:42:43 2856

翻译 创业公司 vs. 大公司

本文由《10 Facts About Working at a Startup vs. a Big Company》意译1) 责任, 义务, 影响力: 在创业公司,做对事情会惠及整个公司以及其客户,容易被高层挖掘,另一方面又允许出错。2) 风险: 创业公司风险大,但是出来找另外一份工作几乎是零成本的。3) 多面手的好机会: 多面手往往不能很好地完成大公司的工

2012-03-16 17:09:15 2147

转载 无论是成功的时候,还是失败的时候,都要时刻提醒自己。

1、缺乏目标。一个没有目标的人一定是一个对生活没有幻想的人。这种人的情绪也不可能好到哪里去。  因此,要想改善情绪,就得先确立一个生活的目标,在追求的过程当中你就会寻找到快乐,心情自己也就好了很多。2、害怕失败。这类人不管做什么事情都缩手缩脚,总是害怕失败,也就是因为这样,他们每天总是一副提心吊胆的样子。  要想改变这种生活,这类人得先增强自己的自信心。3、害怕被拒

2012-03-15 16:47:18 1891

原创 《View Controller Programming Guide for iOS》笔记

1 ViewController分两种:Content View Controller 和 Container View Controller。2 View Controller的职责:对内管理Views,对外跟其他ViewController通信和协调,Storyboards可以降低对外部分的复杂度。3 ViewControllers are brains of you

2012-03-12 17:25:54 4323

原创 [iOS] 关于 self = [super init];

先看一下官方文档给出的初始化示例代码:- (id)init { self = [super init]; // Call a designated initializer here. if (self != nil) { // 省略其他细节 } return self;}容易让人困惑的地方在于,将父类初始化之后,将其返回的对象

2012-03-03 21:47:02 15933 3

原创 [iOS] Objective-C的单件模式

首先,苹果官方文档给出了单件模式的例子,代码见本文最后。其方式是重写release,retain,retainCount,autoRelease,allocWithZone和copyWithZone等方法。1 重写allocWithZone和copyWithZone的目的是外部在多次调用alloc的时候,内部能够确保对象只创建了一次。2 重写release、retain、a

2012-03-01 15:10:58 4419 1

原创 Become a iOS coder iOS入门文档

来自苹果官方文档,在初步了解Objective-C并且知道如何创建简单的应用程序之后,以下为进一步的入门文档。开发者在进一步学习编写iOS应用程序之前,最好先阅读这些文档。iOS App Programming Guide [iOS应用程序编程向导] 描述iOS应用程序最基本的组成和特性以及如何在你自己的项目中实现这些特性。iOS Human Inter

2012-01-17 16:00:15 1950

原创 [Android] 快速记账本(QuickCharge)

应用名称:快速记账本应用英文名称:QuickCharge产品分类 应用软件 金融理财适应版本 2.2  2.1  分辨率: 320*480  480*800  480*854中文介绍:  快速记账本提供快速方便的记账功能,单手便能完成记账。还有清晰的报表功能,方便个人财务分析。  相关应用:随手记 挖财关键词:记账 理财 日常事务 金融中文简介:10-20个汉字。 记账

2011-11-16 16:48:01 3266 6

翻译 编写高效Lua代码的方法 - 3 - 字符串

翻译自《Lua Programming Gems》Chapter 2:Lua Performance Tips:Basic fact By Roberto Ierusalimschy编写高效Lua代码的方法字符串和表一样,了解Lua如何实现字符串(string)对高效地使用字符串是有好处的。    Lua实现字符串的方式有两个地方跟其它脚本语言截然不同。首先,L

2011-11-15 17:45:18 3029

翻译 编写高效Lua代码的方法 - 2 - 表相关

翻译自《Lua Programming Gems》Chapter 2:Lua Performance Tips:Basic fact By Roberto Ierusalimschy编写高效Lua代码的方法表相关通常情况下,你在使用表(table)的时候并不需要任何有关Lua如何实现表的细节。事实上,Lua竭尽全力地避免实现细节暴露给用户。但是这些细节还是在table操

2011-11-15 17:42:06 3853

翻译 编写高效Lua代码的方法 - 1 - 基本知识

翻译自《Lua Programming Gems》Chapter 2:Lua Performance Tips:Basic fact By Roberto Ierusalimschy编写高效Lua代码的方法基本知识Lua在运行代码之前,会先把源码翻译(预编译)成一种内部编码,这种编码由一连串的虚拟机能够识别指令构成,与CPU的机器码很相似。接下来由C代码中的一个whil

2011-11-15 17:39:09 2981

翻译 编写高效Lua代码的方法 - 4 - 减少,重用,回收

翻译自《Lua Programming Gems》Chapter 2:Lua Performance Tips:Basic fact By Roberto Ierusalimschy编写高效Lua代码的方法减少,重用,回收(Reduce, Reuse, Recycle)当处理Lua资源时,我们应当遵守跟利用地球资源一样的3R's原则。    减少是最简单的一种途

2011-11-15 15:19:33 1957

原创 编写高效Lua代码的方法 - 总结

基础1 尽量使用local      使用变量的效率:local > upvalue > global      local变量存放在栈中,upvalue存放在链表中,global变量存放在全局的表中。      例子: 使用local function Add() local x, y return x + yend  使用upvalue

2011-11-12 13:58:50 2939

原创 Android开发札记 1

画布(cavas)抗锯齿方法一:        给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。paint.setAntiAlias(true);方法二:        给Canvas加上抗锯齿标志。有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。canvas.setDrawFilter(new Pai

2011-11-12 13:52:15 832

原创 Android中ListView的性能问题

Android自带的ListView只能满足初步的列表显示需求。如果想要在列表项中添加图片等控件,就需要一个适配器(Adapter)。此时需要重写Adapter的getView方法,这个方法是整个列表的主要计算消耗。写得不好会影响列表的性能,而且往往会成为性能瓶颈。private LayoutInflater mInflater = (LayoutInflater) g

2011-11-12 13:47:25 939 4

原创 More Effective C++ 笔记

More Effective C++ 学习笔记,比起Effective,More Effective有更多的奇妙技巧,更深层次的探讨,看起来更加时髦...

2010-12-27 09:37:00 693

翻译 Lua 5.0实现 4 函数和闭包

当Lua编译一个函数时,会生成一个原型(prototype),该原型包含了函数的虚拟机指令,常量(数字,字符串等),和一些调试信息。在运行期,任何时候Lua执行一个function...end表达式,都会创建一个新的闭包(closure)。每一个闭包有一个与之相应的原型的引用,一个环境的引用(一个保存全局变量的表),以及一个包含了upvalue的引用的数组,通过该数组可以访问外层函数的局部变量。

2010-12-25 14:34:00 1150 1

原创 Mybase:DIY自己的知识数据库

myBase 是一款用于分类管理自由格式资料的数据库软件,对个人用户在微软视窗Windows 桌面上实现文档、知识、笔记、日记、图片和网页的分类管理任务相当有帮助。

2010-12-14 16:51:00 4400 1

原创 ManicTime:你的时间花在哪里

ManicTime是一款电脑时间跟踪软件,记录你使用电脑的时间,同时收集你在电脑上使用了哪些数据,使用数据的时间,打开了哪些软件,以及使用软件的时长。通过这个软件,你可以查看一天的时间花在哪里,效率有多高。并收集自己的电脑使用习惯,剔除一些没必要的时间浪费。

2010-12-13 20:00:00 1139

原创 Windows中Session 0隔离对服务程序和驱动程序的影响

读完Impact of Session 0 Isolation on Services and Drivers in Windows的笔记推荐使用Logonsessions查看当前所有Session以及其进程、使用ProcessExplorer查看当前进程的内核对象来进行验证。

2010-09-26 12:40:00 1610

原创 Effective C++ 笔记(一)

E0 以值传递(pass-by-value)意味着调用拷贝构造函数E2 尽量以const,enum,inline替换#define整数类型(int,short,char,bool)的静态常量数据成员(static-const-member)可以在类声明中赋初值。对于常量,以const或enum替换define,对于函数,以inline替换define。E3 尽可能使用con

2010-05-01 02:41:00 655

转载 优秀程序员的十个习惯

在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你

2010-04-03 01:29:00 617

转载 负面影响的情绪

      1、缺乏目标。一个没有目标的人一定是一个对生活没有幻想的人。这种人的情绪也不可能好到哪里去。因此,要想改善情绪,就得先确立一个生活的目标,在追求的过程当中你就会寻找到快乐,心情自己也就好了很多。  2、害怕失败。这类人不管做什么事情都缩手缩脚,总是害怕失败,也就是因为这样,他们每天总是一副提心吊胆的样子。要想改变这种生活,这类人得先增强自己的自信心。  3、害怕被拒绝。这类人性格比较内

2010-02-02 00:13:00 833 1

转载 成为优秀程序员就必须具备的七个优点

      程序员是一个要求技术含量很高的职业,同时要求有不断进取的精神和不达目的决不罢休的精神状态,以下就是简单总结的如何做个优秀的程序员,希望对各位的求职和工作能够有所帮助。­   1.踏实的工作态度。     低承诺,高实现:如果你的承诺确实是管理人员想听到的,他就会喜欢你。但是,如果不能按照承诺及时交付软件,他就不会再喜欢你。而且如果你没有承诺的也超额完成,可想而知,老板对你的印象

2010-02-02 00:05:00 1081

原创 指针的指针还是指针的引用

今天偶然说到一个函数的接口,是这样子的 void GetInt(int* &p); 函数的功能先不说,说说接口问题. 老师说.从调用方的角度讲,这个接口不清晰.先看看调用方怎么调用这个函数: ...   int* p;   GetInt(p);   ... 如上所示,调用方其实从代码上看,不是很确定p会被改变, 而这个函数是引用传递这个参数的,p随时都可能被改变.

2010-01-29 16:23:00 616 3

原创 winsock2 bind函数的功能

int bind(__in SOCKET s,__in const struct sockaddr* name,__in int namelen); bind函数只能用于还没有连接的socket,即只能在connect或者listen之前调用一个socket只能调用一次bind所以socket一旦bind就不能在改变

2010-01-27 01:14:00 1849

原创 sockaddr 和 sockaddr_in 的区别与联系

两个结构体如下所示:struct sockaddr { ushort sa_family; char sa_data[14];};struct sockaddr_in { short sin_family; //地址族 Socket只能用AF_INET u_short sin_port; //

2010-01-27 01:13:00 1110 1

原创 调用strcpy等函数时出现的内存泄漏问题

关于strcpy的一些内存泄漏的问题int main(){ char c; char* s = &c; strcpy(s, "hello"); printf("%s", s); return 0;} 编译运行之后出错,原因是因为strcpy越界了,"hello"字符串总共有6个字符,s只有一个内存空间strcpy不能够检查目

2010-01-27 01:12:00 3691

原创 Effective C++ 笔记(二)

E27 尽量少做转型动作转型动作会产生副本。2)真正调用了A类的fun函数,而1)却调用了转型产生的临时对象的函数,如果涉及到修改对象的数据,真正被修改数据的是临时对象,而不是this。1) static_castA>(*this).fun();     2) A::fun();尽量避免dynamic_cast操作,尝试寻找其他替代方案。如果转型是必要的,那就将其封装在一个函数

2010-01-27 01:11:00 2922 8

原创 安装WTL

下载WTL80.exe 安装接着在Appwiz下根据VS的版本执行相应的JSVS2008的JS见最后 安装完毕就可以创建WTL的APP了.////////////////////////////////setup90.js//////////////////////////////////////main();function main(){// Decode comm

2010-01-27 01:08:00 942

原创 PKU 1674 Sorting by Swapping

一开始打算用排序,然后计算当中的交换次数,发现有点难.看了discuss才知道.算法很简单,但是给不出严密的证明.找出序列中所有的"环",这里的"环"就是指它们互相交换之后能成为标准序列的最小集合交换的总次数 = 元素个数 - 环数很久没做题了,写写报告...#includeint a[10002];bool b[10002];int main(){int n;

2010-01-27 01:07:00 737

空空如也

空空如也

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

TA关注的人

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