随笔分类 - 02 Object-C
摘要:PrefaceI don’t normally post highly technical stuff to my blog, but here’s an exception that I hope will benefit the Mac and iOS (iPhone & iPad) developer community. So if you’re not part of that, feel free to skip it.IntroductionThis article is a cumulative list of the most commonly-violated be
阅读全文
摘要:Objective-C中调用函数的方法是“消息传递”,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候传递人和消息。 首先介绍两个方法 SEL和@selector根据AppleObjective-C Runtime Reference官方文档这个传递消息的函数就是 id objc_msgSend(id theReceiver, SEL theSelector, …)theReceiver是接受消息的对象类型是id,theSelector是消息名称类型是SEL。下边代码我们来看看如何来生成一个S
阅读全文
摘要:在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如:@interface MyViewController :UIViewController{UIButton *myButton;}@property (nonatomic, retain) UIButton *myButton;@end最近,苹果将默认编译器从GCC转换为LLVM(low level virtual machine),从此不再需要为属性声明实例变量了。如果LLVM发现一个没有匹配实例变量的属性,它将自动创建一个以下划线开头的实例变量。因此
阅读全文
摘要:对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的。内存控制里面有很多门道,在这里分析一下 viewDidUnload 和 dealloc 的区别,关于这两者的区别的文章很多,但是大都是摘抄和翻译官方文档,有的也只是简单的说两句,并没有详细说出两者具体的区别。在了解两者之间的区别,首先要知道view的生命周期,google 里面有很多文章,可以先去搜一下,这里就不详解了。顾名思义 viewDidUnload就是当 view 被卸载以后执行的语句,它与 viewDidLoad 是相互呼应.
阅读全文
摘要:1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这
阅读全文
摘要:ios 判断对象是否存在if (NULL==commonTableView) { //ios 判断对象是否存在 //初始化tableview commonTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 44+37, 320,Screen_height-44-37)]; commonTableView.delegate = self; commonTableView.dataSource = self; [self.view addSubview:...
阅读全文
摘要:UIImageView *imgHeadView = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 60, 60)]; NSURL *url = [NSURL URLWithString:[[NSString alloc]initWithFormat:@"%@%@%@",nstrPublicUrl,@"/uploadfiles/",customerMgr.nsstrImgUrl]]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage
阅读全文
摘要:1、三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 、反三角函数 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI, PI] 3 、双曲三角函数 double sinh (doub...
阅读全文
摘要:只要在需要暂停的代码前添加如下代码即可:[NSThreadsleepForTimeInterval:0.5];
阅读全文
摘要:转自: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"];由于该语言的对象创建方法和
阅读全文
摘要:第一种方法:view plain[UIView beginAnimations:@"Curl"context:nil];//动画开始 [UIView setAnimationDuration:1.25];//动画持续时间 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//动画速度 [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp//类型 forView:self.view ...
阅读全文
摘要:http://blog.csdn.net/totogo2010/article/details/8048652
阅读全文
摘要:我们都知道objective C不能像C++一样支持多继承,但是在OC的使用经常会碰到需要使用多继承的情况。例如,ClassA中有methodA,ClassB中methodB,而现在需要使用这两个类中的方法。如何按照C++的编程思路,毫无疑问采用多继承就搞定了,在OC就需要动动脑子了。其实我们在学习设计模式的时候知道,多继承的效率不高,而且采用组合的模式可以完全代替继承模式。那么,这种思路完全可以用在OC中实现多继承(或许OC抛弃多继承,就是强迫我们使用更高效的组合设计模式吧!)。下面用实际的代码来表示组合如何来代替多继承。现在ClassC需要继承ClassA中methodA、ClassB中m
阅读全文
摘要:各种语言都有些传递函数的方法:C语言中可以使用函数指针,C++中有函数引用、仿函数和lambda,Objective-C里也有选择器(selector)和block。不过由于iOS SDK中的大部分API都是selector的方式,所以本文就重点讲述selector了。Objective-C和我接触过的其他面向对象的语言不同,它强调消息传递,而非方法调用。因此你可以对一个对象传递任何消息,而不需要在编译期声名这些消息的处理方法。很显然,既然编译期并不能确定方法的地址,那么运行期就需要自行定位了。而Objective-C runtime就是通过“id objc_msgSend(id theRec
阅读全文
摘要:http://blog.csdn.net/wihing/article/details/7316041
阅读全文
摘要:编程中,我们最常用到的业务逻辑之一是“分支判断”。分支判断在编码实践中有switch....case 和 if....else if....两种方式。switch....case.....与if...else if...相比,更加易读、易理解、易维护。但是switch....case.....只能按照int 或char 对判断条件进行区分,显然是不够的。if...else if....虽然在理解上会比switch....case.....更加复杂一点,但是它的判断范围和方式不受人和限制的。
阅读全文
摘要:例子代码:for (int i = 0; i < 3; i++) {switch (i) { case 0: printf(i); case 2: printf(i); default: printf(i); }}执行结果却是000122,原因是case只是一个入口[判断只在switch处进行做,应用程序一旦进入某个case,除非遇到break或者switch结束,应用程序会一直执行下去。],经过判断variable的值符合case的条件之后, 程序就会从这里进入, 直到出现break或者整个switch语句结束.
阅读全文
摘要:Object-C的语法结构,总的来说,就是“主-谓-定” 。
阅读全文
浙公网安备 33010602011771号