摘要:
1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数+1 copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1 如果为0释放内存 autorelease 对象引用计数-1 如果为0不马上释放,最近一个个pool时释... 阅读全文
摘要:
iOS开发UIViewController内存管理是本文要介绍的内容,在iOS3.0 后,UIViewController多了一个叫做 viewDidUnLoad 的方法。不少人都不清楚这个方法的具体意义,苹果的文档也就一句 ”Called when the controller’s view is released from memory” 简单的解释了下,并要求你把 IBOutlet 绑定的视图给清空,为什么呢? 先看下UIViewController从创建 view 到展示的流程的几个函数 -initWithNibName:bundle: 这两个方法都是初始化一个 vc,但请注意... 阅读全文
摘要:
多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美。这篇文章主要从线程创建与启动、线程的同步与锁、线程的交互、线程池等等四个方面简单的讲解一下iphone中的多线程编程。一、线程创建与启动线程创建主要有二种方式:- (id)init; // designated initializer
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;这两种方法创建后,需要手机启动,启动的方法是:- (void)start; 阅读全文
摘要:
Diff命令的用法该命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。语法:diff[选项]file1file2说明:该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用“-”表示file1或file2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。通常输出由下述形式的行组成:n1an3,n4n1,n2dn3n1,n2cn3,n4字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对f 阅读全文
摘要:
1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co2、往版本库中添加新的文件或文件夹svn add file例如:svn add test.php(添加test.php)svn add *.php(添加当前目录下所有的php文件)3、将改动的文件提交到版本库svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)例如:svn commit -m “ 阅读全文
摘要:
我们做完HelloWord之后在来学习一些最为简单并且很实用的一些控件1.UIAlertView的实现:效果如下图:2.UIActionSheet 的实现UIActionSheet和UIAlertView的区别 都是用于给用户提示操作 而UIActionSheet是从底部弹出 当用户有危险操作时用来提示 例如用户删除某个文件就可以用UIActionSheet提示用户是否确认删除首先.h文件要实现UIActionSheetDelegate 并且实现Delegate中的方法:actionSheet:didDismissWithButtonIndex 方法这个方法当你点击摸个按钮时会自动触发 上面代 阅读全文
摘要:
最近有人问我关于什么时候用self.赋值的问题,我总结了一下,发出来给大家参考.有什么问题请大家斧正. 关于什么时间用self. ,其实是和Obj-c的存取方法有关,不过网上很多人也都这么解答的,那它为什么和存取方法有关?怎么有关的?并没有多少人回答出来.同时关于内存管理的内容,请大家看旺财勇士的Objective-C内存管理总结~CC专版,有些东西我就不多解释了. 进入正题,我们经常会在官方文档里看到这样的代码: MyClass.h @interfaceMyClass :NSObject{ MyObject *myObject; } @property(nonatom... 阅读全文
摘要:
讨论Objective-C的一个奇怪的概念 meta-class在Objective-C中的每个类,都有它自己相关的meta-class,但因为你很少直接使用meta-class,所以显得很神秘。在运行时建立一个类下面的代码在运行时创建一个NSError新的子类,并添加一个方法到里面:Class newClass = objc_allocateClassPair([NSError class], “RuntimeErrorSubclass”, 0);class_addMethod(newClass, @selector(report), (IMP)ReportFunction, “v@:”); 阅读全文
摘要:
当出现EXE_BAD_ACCESS, SIGABRT 及其他Crash时可以尝试用:po [NSThread callStackSymbols]一:列文件清单1. List(gdb) list line1,line2二:执行程序要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。( 阅读全文
摘要:
单例设计模式。因为此模式经常引起争议,所以我想有必 要在此解释一下单例。原则上,单例是在程序生命周期里只被实例化过一次的 类。为了确保这一点,我们利用类的一个静态方法来生成和访问对象。因此, 你是通过以便利方法来访问某个类的单例对象的,而不是用 alloc/init或者静态autorelease初始化方法。在很多时候,我们使用一个某个类的唯一实例。最常见的就是一个程序的主类。以下是以名为 RootViewController 创建的一个单例函数:static RootViewController*sharedRootController = nil;+(RootViewController * 阅读全文