OC基础语法学习笔记

来源:互联网 发布:对外汉语网络教师 编辑:程序博客网 时间:2024/05/16 13:50
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 = [[MyClass alloc] 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 NULLSELSEL oneMethod=@selector(render);//@selector 得到一个方法的指针[oneObject performSelector:oneMethod]// 传入名为render的方法,使得oneMethod成为指向render方法的指针,oneObject是实例化的对象// 通过呼出performselector来执行render方法。performSelector是NSObject类的实现方法。YESNO5--循环for(n=1;n<11;n=n+1){}while(n <= 5){}do{}while(n != 1)6--条件if(){}else{};switch(){case ...}XX?SS:CC7--内存管理(计数器半自动化管理)alloc +1release -1copy 1 重新生成一个新的实例retain +1autorelease 再pool栈顶添加此对象NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];[pool drain]8--继承@interface subClassName:superClassName-(BOOL)isKindOfClass:class-object // 判断对象是否是某一种类的实例(包括其父类)-(BOOL)isMenberOFClass:class-object // 判断对象是否是某一种类的实例(不包括其父类)-(BOOL)respondsToSelector:select // 判断对象是否实现某个方法+(BOOL)instancesRespondToSelector:selector //判断类的实例是否实现某个方法+(BOOL)isSubclassOfClass:class-object //判断一个类是否是某个类的子类-(id)performSelector:selector // 让对象呼叫指定的方法-(id)performSelector:selector withObject: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协议的使用:@interface myClass: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@interface myClassB:NSObject<proA>-(void)testDelegate;@end@implement myClassB// 协议(接口)方法实现-(void)testDelegate{myClass * myA = [[myClass alloc] init];// 设置代理_delegate self;[myA callDelegateMethod];}@end10--属性声明:@property (修饰) 类型 属性名@property(nonatomic,retain) id _delegate;实现:@synthesize 属性名@synthesize -delegate;修饰的类型:readwrite: 变量可读写readonly: 变量只可以读,需要手动添加setterassign: 变量可以直接赋值,内存引用计数值不变retain: 对象进行一次引用,内存引用计数值+1copy: 复制一个新的对象,内存引用计数值为1nonatomic: 默认为atomic 在多线程是变量互斥11-快速枚举NSArray * array = [NSArray arrayWithObjects:@"ome",@"two",@"three",nil];NSDictionaryNSManagedObjectModelNSSet----------------------------------for(NSString * element in array){}----------------------------------NSEnumerator * enu = [array reverseObjectEnumerator];for(NSString * element =[enu nextObject]){if([element isEqualToString:@"three"]){break;}}
原创粉丝点击