本帖最后由 huguozhang 于 2015-7-16 02:27 编辑
Objective-C语法: 一:对象声明语法:类名 * 对象名 = [[类名 alloc] init] [对象名 release] //释放对象的实例 注:alloc是NSObject的类方法,init是实现类的初始化方法 二:类 @interface MyClass:NSObject //接口 { int count; id data; NSString * name;//变量 } - (NSString *) getName;//方法 - (void)setName :(NSString *)name + (float)classMethod:(float *)Method1 keyword :int) Method2 @end @implementation MyClass //实现 - (NSString)getName { return @""; } @end 三:方法 声明: +/-(返回类型)方法名:( 参数类型1)参数名1 参数说明关键字 :参数类型2)参数名2 (...)...
- 类实例的方法 1-[self 方法名] 2-MyClass * myclass = [[MyClassalloc] init]; [myclass setName :@"name"]; + 类的方法 [MyClass classMethod:12.5 keyword:1]
Objective-C基础语法: 1--文件类型 .h 头文件:类,类型,方法,结构体等声明 .m 实现文件:OC 和 C的代码 .mm 实现文件:C++和OC的代码 #import 确保头文件不被重复引用 2--字符串 @"string"; %d 十进制整数 %f 十进制小数(浮点型) %c 字符 %s 字符串 %@ OC字符串 3--日志打印 printf("log message"); NSLog(@"log message"); 4--数据类型和表达式 C语言基本数据类型:int float double char 其它数据类型:Long Longlong Short Unsigned(无符号型0--255) signed(有符号类型-128--127) OC数据类型: id 标识任何类的对象 BOOL boolean(YES/NO) NIL NULL SEL SELoneMethod=@selector(render);//@selector 得到一个方法的指针 [oneObjectperformSelector :oneMethod] // 传入名为render的方法,使得oneMethod成为指向render方法的指针,oneObject是实例化的对象 // 通过呼出performselector来执行render方法。performSelector是NSObject类的实现方法。 YES NO 5--循环 for(n=1;n<11;n=n+1){} while(n <= 5){} do{}while(n != 1) 6--条件 if(){}else{}; switch(){case ...} XX?SS:CC 7--内存管理(计数器半自动化管理) alloc +1 release -1 copy 1 重新生成一个新的实例 retain +1 autorelease 再pool栈顶添加此对象 NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];
[pool drain] 8--继承 @interfacesubClassName:superClassName -(BOOL)isKindOfClass:class-object// 判断对象是否是某一种类的实例(包括其父类) -(BOOL)isMenberOFClass:class-object// 判断对象是否是某一种类的实例(不包括其父类) -(BOOL)respondsToSelector:select //判断对象是否实现某个方法 +(BOOL)instancesRespondToSelector:selector//判断类的实例是否实现某个方法 +(BOOL)isSubclassOfClass:class-object//判断一个类是否是某个类的子类 -(id)performSelector:selector // 让对象呼叫指定的方法 -(id)performSelector:selectorwithObject:object // 让对象呼叫指定的方法并带有参数 A * a = [[A alloc] init]; if([a isKindOfClass:[A class]] ==YES){} 9--类别和协议 类别:@interface myClass(类别名) 类别和继承类似,但类别只能添加新的方法不能添加任何实例变量 协议:类似于Java的interface 协议的声明: @protocol protocolName @optional // 默认实现的方法 -(void)method1 @required // 必须实现的方法 -(void)method2 @end 协议的使用: @interfacemyClass:superClass<protocol1,protocol2, ...> 协议实现对象委托: @protocol proA -proMethod1; -proMethod2; @end
@interface myClassA:NSObject { // 代理变量 id _delegate; } // 代理方法 @property(nonatomic,retain) id_delegate; -(void)callDelegateMethod; @end @implement myClassA @synthesize -delegate; -(void)callDelegateMehtod { [_delegate proMethod1]; [_delegate proMethod2]; } @end
@interfacemyClassB:NSObject<proA> -(void)testDelegate; @end @implement myClassB // 协议(接口)方法实现 -(void)testDelegate { myClass * myA = [[myClass alloc]init]; // 设置代理 _delegate self; [myA callDelegateMethod]; } @end 10--属性 声明:@property (修饰) 类型 属性名 @property(nonatomic,retain) id_delegate; 实现:@synthesize 属性名 @synthesize -delegate; 修饰的类型: readwrite: 变量可读写 readonly: 变量只可以读,需要手动添加setter assign: 变量可以直接赋值,内存引用计数值不变 retain: 对象进行一次引用,内存引用计数值+1 copy: 复制一个新的对象,内存引用计数值为1 nonatomic: 默认为atomic 在多线程是变量互斥 11-快速枚举 NSArray * array = [NSArrayarrayWithObjects:@"ome",@"two",@"three",nil]; NSDictionary NSManagedObjectModel NSSet ---------------------------------- for(NSString * element in array){} ---------------------------------- NSEnumerator * enu = [arrayreverseObjectEnumerator]; for(NSString * element =[enunextObject]) { if([elementisEqualToString:@"three"]) { break; } } ————————————————
|