Objective-C 语言总结
2016-02-03 08:44
375 查看
通过Demo代码实例和伪代码,演示一般的语言使用方法,以及程序的大体结构。
更详细部分通过阅读文档了解。
更详细部分通过阅读文档了解。
// // main.m // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // /* Demo结构: main.m 主程序文件 Protocl.h 协议 ClassA.h 自定义类接口 ClassB.m 自定义类实现 ClassA+Categroy.h 自定义分类接口 ClassB+Categroy.m 自定义分类实现 */ #import <Foundation/Foundation.h> #import "ClassA.h" #import "ClassA+Categroy.h" int main(int argc, const char * argv[]) { @autoreleasepool { #pragma mark 初始化与调用 ClassA * classA = [[ClassA alloc] init]; classA.propertyA = 10; [classA setPropertyA:20]; #pragma mark 控制流 NSArray * array1 = @[@"A",@"B",@"C"]; // for 循环 for (int i = 0; i < array1.count; i++) { NSLog(@"for 1 %@", array1[i]); // ... } for (NSString * str in array1) { NSLog(@"for 2 %@", str); // ... } // while 循环 int i = 0; while (i < array1.count) { NSLog(@"while %@", array1[i]); i++; } i = 0; do { NSLog(@"do %@", array1[i]); i++; } while (i < array1.count); // break And continue i = 0; while (TRUE) { if (i >= array1.count) { // 跳出循环 break; } else { i++; // 跳过后面的代码 continue; // ... // 在这里的代码永远不会执行 } } #pragma mark 选择结构 // if if (TRUE && TRUE) { // 复合条件 && 表示都,|| 表示或 // ... } else if (true) { // ... } else { // ... } // switch switch (i) { case 0: // ... break; case 1: // ... break; default: // ... break; } // Condition i = i >= array1.count ? 0 : 10; } return 0; }
// // Protocol.h // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // #import <Foundation/Foundation.h> /* @protocol protocolName<ParentProtocolName...> @required -(void)protocolMethod; @optional -(void)optionalProtocolMethod; @end */ @protocol protocolName<NSObject> @required -(void)protocolMethod; @optional -(void)optionalProtocolMethod; @end
// // ClassA.h // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // #pragma mark - 导入文件 /* #import <系统类库名称> #import "工程文件名称" */ #import <Foundation/Foundation.h> #import "Protocol.h" #pragma mark - 类接口 /* @interface NewClassName: ParentClassName<ProtocolName> PublicProperty; PublicMethodDeclarations; @end */ @interface ClassA : NSObject<protocolName> #pragma mark PublicProperty /* @property (Attibute) Type [*] name; Attribute: 读写特性 readonly; readwrite;(Default) 多线程特性 nonatomic; atomic;(Default) 内存管理特性 weak; copy; strong;(Defalut) retain; assign; unsafe_unretained; */ @property int propertyA; @property NSString * propertyB; @property (readonly) NSString * propertyC; #pragma mark PublickMethodDeclarations /* 类方法 +开头 +(BackType) methodName:(ArgumentType)argumentName secondArgumentOutName:(ArgumentType)secondArgumentName; 实例方法 -开头 -(BackType) methodName:(ArgumentType)argumentName secondArgumentOutName:(ArgumentType)secondArgumentName; */ +(void) classMethod; -(void) methodA; -(int) methodB; -(NSString *) methodC; -(void) methodD:(int)argument; -(void) methodE:(int)argument secondArgument:(NSString *)secondArgument; @end
// // ClassA.m // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // #import "ClassA.h" #pragma mark - 扩展 /* @interface NewClassName() { memberDeclarations; } privateProperty; privateMethod; @end */ @interface ClassA() { int _memberA; NSString * _memberB; } // 改变公有属性的读写属性 @property (readwrite) NSString * propertyC; // 新增私有属性 @property (atomic) NSString * propertyD; @end #pragma mark - Implementation /* @implementation NewClassName { memberDeclarations; } methodDefinitions; @end */ @implementation ClassA { #pragma mark memberDeclarations int _memberC; NSString * _memberD; } #pragma mark methodDefinitions +(void) classMethod { NSLog(@"Call classMethod"); } -(void) methodA { NSLog(@"Call methodA"); } -(int) methodB { NSLog(@"Call methodB"); return 10; } -(NSString *) methodC { NSLog(@"Call methodC"); return @"Back"; } -(void) methodD:(int)argument { NSLog(@"Call methodD:"); } -(void) methodE:(int)argument secondArgument:(NSString *)secondArgument { NSLog(@"Call methodE: secondArgument:"); } #pragma mark init and dealloc -(id) init { NSLog(@"Call init"); return [self initWi ad96 thName:@"DefaultName"]; } -(id) initWithName:(NSString *)name { NSLog(@"Call initWithName:"); //1. 调用父类初始化器 self = [super init]; //2. 确认初始化成功 if (self) { // ... } //3. 返回类实例 return self; } -(void)dealloc { //1. 自动调用:ARC 对对象属性的引用技术减持 //2. 手工实现 NSLog(@"Call dealloc"); //3. 自动调用:父类dealloc } #pragma Protocol Implementation -(void)protocolMethod { NSLog(@"Call protocolMethod"); } // 可以不实现这个方法 -(void)optionalProtocolMethod { NSLog(@"Call optionalProtocolMethod"); } @end
// // ClassA+Categroy.h // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // /* #import "类文件" @interface ClassName(CategroyName) newMethods; @end */ #import "ClassA.h" @interface ClassA(Categroy) -(void)newMethod; @end
// // ClassA+Categroy.m // ObjectiveCLanguage // // Created by 黄穆斌 on 16/2/3. // Copyright © 2016年 MuBinHuang. All rights reserved. // #import "ClassA+Categroy.h" @implementation ClassA(Categroy) -(void) newMethod { NSLog(@"Call Categroy's newMethod."); } @end
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中使用NSString类操作字符串的方法小结
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- 全面解析Objective-C中的block代码块的使用
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- 简介Objective-C解析XML与JSON数据格式的方法
- 理解Objective-C的变量以及面相对象的继承特性
- 简单讲解Objective-C的基本特性及其内存管理方式
- Objective-C处理空字符串和页面传值及自定义拷贝
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- Objective-C中类和方法的定义以及协议的使用