在声明属性的时候,经常会用到nonatomic,如果没有用这个关键字的话,那么在程序自动创建“设值方法”和“读值方法”的时候,就会把self作为一个mutex,从而保证了原子性:@synchronized(self){……} 它把代码包含在了@synchronize中,并以self作为mutex。这就意味着这段代码在执行的过程中,其他以self作为mutex的代码就无法执行了,这样保证了数据的完整性。如果程序中只有一个main thread,那么就可以把所有的成员变量都声明为nonatomic。对于UI控件来说,最好也加上nonatomic,因为他们也基本只会在主线程中更新。 Read More
posted @ 2013-04-12 16:42 羊羊羊🐑 Views(108) Comments(0) Diggs(0) Edit
block是从ios4开始引进的新东西,声明一个block就好比声明一个方法的指针。下面声明一个block,这个block是返回值为空,它有两个参数:void( ~myBlock)(NSString *str1,int val); 为了声明一种类型的block,可以这样写:typedef void(~MyBlockType)(NSString *str1,int val); Read More
posted @ 2013-04-12 15:22 羊羊羊🐑 Views(92) Comments(0) Diggs(0) Edit
nil和C语言中的NULL一样,在.h中定义。nil表示一个Objective-C对象,这个对象的指针指向空(没有东西就是空),定义如下:#define nil 0 首字母大写的Nil 和nil有一点不一样,Nil定义一个指向空的类,是class,而不是对象。#define Nil 0下面看一个具体的实例:#import <Foundation/Foundation.h>@interface ClassA : NSObject-(void)print;@end#import "ClassA.h"@implementation ClassA-(void)print Read More
posted @ 2013-04-12 14:27 羊羊羊&#128017; Views(213) Comments(0) Diggs(0) Edit
按照课本上说的,Class类来获得一个对象所属的类。但是用的时候,怎么迷迷糊糊的呢!比如下面的一个实例:#import<Foundation/Foundation.h>@interface ClassA :NSObject-(void)print;@end@implementation ClassA-(void)print{NSLog(@"I'm classA.");}@endint main(int argc,const char *argv[]){@autoreleasepool{ClassA *classA = [ClassA new];Class Read More
posted @ 2013-04-12 14:03 羊羊羊&#128017; Views(142) Comments(0) Diggs(0) Edit