摘要:
转自:http://blog.csdn.net/weiqubo/article/details/73761891. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数+1 copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1...
阅读全文
posted @ 2013-01-29 09:42
ygm900
阅读(499)
推荐(0)
摘要:
转自:http://mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/中文:http://www.elexcon.com/news/56263.htmlThere are plenty of different places to get a mobile application designed. The problem is that they’re quite expensive. You might be able to figure out how to create your own, but it w
阅读全文
posted @ 2013-01-29 09:37
ygm900
阅读(994)
推荐(0)
摘要:
Objective-C内存管理 调试内存泄露是本文要介绍的内容,解决内容问题应该每个迭代周期要做一些压力和内存测试,我们先来看内容。1、内存的问题是发现越早,解决的代价就越小。所以最重要的是理解Objective-C内存管理,遵循我之前提到的实践准则和编码规范。另外,在每个迭代周期要做一些压力和内存测试,尽早发现问题。2、利用Clang静态检测工具。在XCode 3.2之后的版本里,Clang已经被集成进来。Build ->Build & Analyze即可运行,它可以发现大部分因为疏忽造成的内存泄露。比如有Alloc没有release等。下图是一次静态检测的结果. 如图所示,C
阅读全文
posted @ 2013-01-29 00:41
ygm900
阅读(217)
推荐(0)
摘要:
分析内存泄露新方法:Product→Analyze 效果如下
阅读全文
posted @ 2013-01-29 00:13
ygm900
阅读(187)
推荐(0)
摘要:
第一种NSString *str = [NSString alloc]initWithString:@"something"];第二种NSString *str = [NSString stringWithFormat:@"something"];
阅读全文
posted @ 2013-01-28 23:54
ygm900
阅读(211)
推荐(0)
摘要:
虽然iOS 5.0版本之后加入了ARC机制,但由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准备好的内存泄露的Demo吧:leak app下载下来,打开运行,程序是一个寿司的列表,列出各种寿司卷。试着选择里面的几行,应该是选第二行的时候就崩溃了。崩溃截图:在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原
阅读全文
posted @ 2013-01-28 23:46
ygm900
阅读(176)
推荐(0)
摘要:
转自:http://www.cnblogs.com/missna/archive/2011/05/26/2059052.htmlObjective-C 2.0最大的增强可能就是垃圾收集了(Garbage Collection)。与“垃圾收集”对应的是传统的引用计数(Reference Count)内存管理形式。使用了垃圾收集意味着大部分情况下《Very simple rules for memory management in Cocoa>>所介绍的工作你在程序中都不需要做了,系统会自动帮你管理好这些问题。如果你没有阅读过《Very simple rules for memory
阅读全文
posted @ 2013-01-28 23:42
ygm900
阅读(161)
推荐(0)
摘要:
转自:http://elton.iteye.com/blog/349195Objective-C 2.0增加了一些新的东西,包括属性和垃圾回收。那么,我们在学习Objective-C 2.0之前,最好应该先了解,从前是什么样的,为什么Objective-C 2.0要增加这些支持。这一切都跟Cocoa内存的管理规则有关系,我们知道,Objective-C中所有变量都定义为指针。指针是一个特殊的变量,它里面存储的数值被 解释成为内存里的一个地址,如果使用不当,就会出错或者造成内存的泄露。要了解这些,就需要看看其内存管理的规则到底是什么样的。这篇文章也应该做为苹果开发工具中提供的性能调试工具Inst
阅读全文
posted @ 2013-01-28 23:39
ygm900
阅读(161)
推荐(0)
摘要:
转自:http://www.cocoachina.com/bbs/read.php?tid=132156前言Objective-c语言在申请对象的时,需要使用两段构造(Two Stage Creation)的模式。一个对象的创建,需要先调用alloc方法或allocWithZone方法,再调用init方法或initWithSomething方法。如下是一个NSString对象的创建示例:复制代码NSString * str = [[NSString alloc] initWithString:@"http://blog.devtang.com"];由于该语言的对象创建方法和
阅读全文
posted @ 2013-01-28 23:14
ygm900
阅读(184)
推荐(0)
摘要:
我一直惊叹iOS和Objective-C内存处理能力,例如iPad版本的iWork,Pages应用就是一个内存处理技术应用的鬼斧神工之作。想想256M内存的iPad,可以带来如此的华丽的界面同时获得如此流畅的用户体验,真是不简单。原因就是iOS一直提倡开发者在有限硬件资源内写出最优化的代码,使用CPU最少,占用内存最小。(以下代码适用于iOS SDK 4.1, 由于新SDK 4.2对内存使用有新改动,所以可能有不同。。。)1. 尽量少的UIView层通常我们喜欢把很多控件层(UILabel,UIButton,UIView等)一起放到一个大的UIView容器来显示我们的内容,这个方法一般是可以的
阅读全文
posted @ 2013-01-28 23:09
ygm900
阅读(221)
推荐(0)
摘要:
从Leopard开始,苹果在XCode系列开发工具中增加了一个新的功能强大的性能调试工具,叫做Instruments。Instruments是一个非常具有新意的调试工具,如果你使用过iLife中非常简单易用的音乐创作工具GarageBand,你会发现这两者的界面非常类似。能够把开发工具的UI做成像音乐创作软件的形式,可能也只有苹果能够想到了。Instrument里提供了极多的功能,可以针对程序的各个方面进行优化调试。对于初学者来说,虽然这个软件的界面极为友好,完全不同于以往的任何开发调试工具,但是如果能够有一篇简单的教学,手把手地通过一个例子用Instruments进行调试,那么就更容易上手了
阅读全文
posted @ 2013-01-28 22:59
ygm900
阅读(1386)
推荐(0)
摘要:
晚上提交app的时候总是报出icon的错误iPad: Icon.png: icon dimensions (0 x 0) don’t meet the size requirements. The icon file must be 72×72 pixels起初以为图片坏了, 后来才发现好像是 10.7.3 的系统bug修复方法:将Compress PNG Files 设置为 NO转自:http://www.lazyid.com/2012/02/04/ipad-icon-png-icon-dimensions-0-x-0-dont-meet-the-size-requirements
阅读全文
posted @ 2013-01-28 22:34
ygm900
阅读(389)
推荐(0)
摘要:
在iOS3.0之后的版本不再使用这样的语法,解决方法如下:将:cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 修改为:cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 参考:http://forums.macrumors.com/archiv...
阅读全文
posted @ 2013-01-28 19:06
ygm900
阅读(222)
推荐(0)
摘要:
文章有些偏激 正如文章中所说的重要的去其糟粕,取其精华,客观的来看待这篇文章,从文中来看写这文章的哥们估计是在亚马逊,写淘宝的那一段看的我有点...所以 要淡定 要清醒 要有思考。我前两天,收到一封邮件,一位快要毕业的的大学生问我,是去百度,还是去创新工场?他在来信中说,从个人道德价值观来说,他想去创新工场,要远离流氓企业,不然会有狼狈为奸、助纣为虐的感觉,对不起自己。但是创新工场那边情况不熟悉, 不知道怎么选择,并问我现在比较热的移动互联网靠不靠谱。 ——我对新东西是总是持谨慎的态度,创新工场的刚起步,还需要磨练,而且从现阶段的情况看下来,并不太妙。百度的技术还是很不错的,人家好多年了,用户
阅读全文
posted @ 2013-01-28 19:02
ygm900
阅读(211)
推荐(0)
摘要:
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle: @"是否保存信息?"//@"保存信息到草稿" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"不保存" otherButtonTitles:@"保存", nil]; 解决方法,即在头文件中加入:UIActionSheetDelegate代理...
阅读全文
posted @ 2013-01-28 17:48
ygm900
阅读(997)
推荐(0)
摘要:
UITableViewCell *tvCell = [[[UITableViewCellalloc]initWithFrame:CGRectZeroreuseIdentifier:cellIdetify]autorelease];'initWithFrame:reuseIdentifier:' is deprecated --上述为极不赞成的写法,建议改为如下写法:
阅读全文
posted @ 2013-01-28 16:40
ygm900
阅读(439)
推荐(0)
摘要:
//此问题修复完成后,需要编译以下工程才能看到效果Property 'lMenuTimes' requires method 'lMenuTimes' to be defined - use @synthesize, @dynamic or provide a method implementation//当一个有返回值的方法,缺少返回值时,会报如下警告relessorder/MenuController.m: warning: Semantic Issue: Control may reach end of non-void function//不相容的指针I
阅读全文
posted @ 2013-01-28 16:37
ygm900
阅读(5595)
推荐(0)
摘要:
线程创建与启动NSThread的创建主要有两种直接方式:[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];和NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];[myThread start];这两种方式的区别是:...
阅读全文
posted @ 2013-01-28 15:59
ygm900
阅读(224)
推荐(0)
摘要:
转自:http://www.cnblogs.com/speeding/archive/2011/09/16/2178355.htmliPhone程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计数是一个主要原因。在NSMutableArray how to properly addObjects and release这个讨论主题中,给出了正确的使用NSMutableArray的步骤,先看他给出的代码。
阅读全文
posted @ 2013-01-28 15:12
ygm900
阅读(310)
推荐(0)
摘要:
NSString *path =[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:smallpic];
阅读全文
posted @ 2013-01-28 11:48
ygm900
阅读(231)
推荐(0)
摘要:
NSData *data = [NSData dataWithContentsOfURL:url];NSString *path =[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:smallpic];[data writeToFile:path atomically:NO];
阅读全文
posted @ 2013-01-28 11:48
ygm900
阅读(157)
推荐(0)
摘要:
NSString *urlstr = [[NSString alloc]initWithFormat:@"%@%@%@",nstrPublicUrl,IMAGE_PATH,smallpic]; NSURL *url = [NSURL URLWithString:urlstr];
阅读全文
posted @ 2013-01-28 11:47
ygm900
阅读(109)
推荐(0)
摘要:
iPhone/iOS图片读取、保存、绘制http://blog.csdn.net/jerryvon/article/details/7526147
阅读全文
posted @ 2013-01-28 11:41
ygm900
阅读(129)
推荐(0)
摘要:
objective-C是C语言的一个扩展集,但是它是一门面向对象语言。如果学过C#或是java的朋友应该知道在C#的类中有一个Tostring()方法,在objective—C中也有一个类似的方法,即description()方法。description方法是基类NSObject所带的方法,在自定义的类中,我们可以重载改方法。例如:我们自定义一个people类:@interface People:NSObject{ NSString *name; int age;}@ implementation People{ -(id) init { if(self=[super init]) { nam
阅读全文
posted @ 2013-01-28 11:36
ygm900
阅读(304)
推荐(0)
摘要:
1、代码结构清晰,易于维护、易于管理内存2、高内聚、松耦合,模块化设计,可重用3、易扩展4、易优化(内存使用调优、性能调优)
阅读全文
posted @ 2013-01-25 14:07
ygm900
阅读(175)
推荐(0)
摘要:
1、难道充足的内存可以影响应用程序的速度?
阅读全文
posted @ 2013-01-25 11:44
ygm900
阅读(162)
推荐(0)
摘要:
[NSThreadsleepForTimeInterval:0.5];
阅读全文
posted @ 2013-01-25 11:17
ygm900
阅读(366)
推荐(0)
摘要:
-(void)clearThisController{ for (id obj in [self.view subviews]) { if([obj isKindOfClass:[UIView class]]){ UIView *view = (UIView *)obj; if (view.tag != 99999) { [view removeFromSuperview]; [view release]; } } }}
阅读全文
posted @ 2013-01-25 01:43
ygm900
阅读(215)
推荐(0)
摘要:
当CommonAlert.m中的方法执行的快时,alertView的显示和消失是正常的。如下所示:2013-01-24 23:31:59.978 点餐系统[5649:707] 进入OrderListViewController.m的-(IBAction)btnTaocanMenuClicked:(id)sender2013-01-24 23:31:59.982 点餐系统[5649:707] 进入CommonAlert.m的startAlertView2013-01-24 23:31:59.986 点餐系统[5649:5e0b] 进入CommonAlert.m的startAlertProcess
阅读全文
posted @ 2013-01-25 00:37
ygm900
阅读(693)
推荐(0)
摘要:
在非主线程中改变画面,是危险的。
阅读全文
posted @ 2013-01-25 00:08
ygm900
阅读(138)
推荐(0)
摘要:
这个问题的实质应该是在非主线程中 直接修改 界面。如果把alertView 发在主线程调用就ok了。==============非主线程[self performSelectorOnMainThread:@selector(onResp*****eInMainThread) withObject:nil waitUntilDone:YES];============= 主线程-(void)onResp*****eInMainThread{[waitingBackView removeFromSuperview];UIAlertView *alert = [[UIAlertView alloc]
阅读全文
posted @ 2013-01-24 23:58
ygm900
阅读(171)
推荐(0)
摘要:
[[NSString alloc] initWithFormat:@"%d",index] 和[NSString stringWithFormat:]的区别?
阅读全文
posted @ 2013-01-24 23:21
ygm900
阅读(503)
推荐(0)
摘要:
如果要添加一个进度条,只要先创建并设置好一个UIProgressView的实例,再利用addSubbiew方法添加到alertView中即可。在实际应用中,我可能需要在类中保存进度条的对象实例,以便更新其状态,因此先在自己的ViewController类中添加成员变量:@interface MySampleViewController : UIViewController {@private UIProgressView* progressView_;}接下来写一个叫做showProgressAlert的方法来创建并显示带有进度条的alert窗口,其中高亮的部分就是把进度条添加到alertVi
阅读全文
posted @ 2013-01-24 22:58
ygm900
阅读(1057)
推荐(0)
摘要:
转自:http://blog.sina.com.cn/s/blog_6647b3b601015u9o.html参考:http://www.cnblogs.com/xinye/archive/2012/12/23/2830156.html先甩两个iOS Developer Library的链接,放眼一看就知道这个东东内容灰常少,它的特点就是易学易用,可作为初学入门练习。搞懂以后慢慢学定制界面、增加功能,即使自己不重写也能看懂大神们写的SDK,挪为己用。基本使用流程是这样的: 初始化一个UIAlertView——进一步设置——显示和释放。“标准语句”↓UIAlertView *alert = [[
阅读全文
posted @ 2013-01-24 22:45
ygm900
阅读(3129)
推荐(1)
摘要:
1、向系统申请的view button array 等资源一定要及时释放。尤其是img图片,更要及时释放。2、在pad点餐系统中使用如下方法释放view资源,真是太有必要了。//设置按钮状态及清空视图 -(void)clearSmallOrderList:(NSString *)code{ NSLog(@"进入OrderListViewController.m的-(void)clearSmallOrderList:(NSString *)code"); for (id obj in [self.view subviews]) { if ([obj...
阅读全文
posted @ 2013-01-24 17:25
ygm900
阅读(364)
推荐(0)
摘要:
不會。除非父視圖release導致其retainCount歸零從而使其自動調用dealloc方法才會使子視圖release。
阅读全文
posted @ 2013-01-24 15:46
ygm900
阅读(137)
推荐(0)
摘要:
释放内存的时候,一定要注意时机。一般滴,我们会在使用完某个对象之后,开始释放它的内存。如果程序调用到已经被释放的对象,程序将出现闪退。
阅读全文
posted @ 2013-01-24 15:19
ygm900
阅读(226)
推荐(0)