【转载】OC基础语法学习


特存档在此,方便以后头脑混乱时查阅。
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 NULL SEL SEL oneMethod=@selector(render);//@selector 得到一个方法的指针 [oneObject performSelector: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--继承 @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 协议实现对象委托: @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 -(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 = [NSArray arrayWithObjects:@"ome",@"two",@"three",nil]; NSDictionary NSManagedObjectModel NSSet ---------------------------------- for(NSString * element in array){} ---------------------------------- NSEnumerator * enu = [array reverseObjectEnumerator]; for(NSString * element =[enu nextObject]) { if([element isEqualToString:@"three"]) { break; } }
Copy From: http://blog.csdn.net/onetoneom/article/details/7736445



评论

此博客中的热门博文

使__attribute__((annotate("xxx")))能作用于OC函数

viewWillAppear不执行的解决办法

iOS中使用xpc/xpc.h