分组导航
实现在同一个文件中,代码的快速定位。有如下代码文件:
//// main.m// GroupNavigationMark 分组导航标记//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person@end@interface Students : NSObject@end@implementation Students@end@interface Bird : NSObject- (void)fly;@end@implementation Bird-(void)fly{NSLog(@"我会飞");}@end@interface Cat : NSObject@end@implementation Cat@end@interface Apple : NSObject- (void)red;@end@implementation Apple-(void)red{NSLog(@"我是红色的");}@end@interface Bananer : NSObject@end@implementation Bananer@endint main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...NSLog(@"Hello, World!");}return 0;}
如果文件中的代码不断的增加,那么在查找文件中的某一个类或者方法等就没有那么方便了。在文件的顶部,有一个文件的导航:
点击No Selection,显示当前文件中相关的类、方法等,可快速定位
为分组栏添加标记,使用#pragma mark x 语法,根据需求增加代码即可
小编在此处将代码做如下修改
//// main.m// GroupNavigationMark 分组导航标记//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>#pragma mark - 人类@interface Person : NSObject@end@implementation Person@end@interface Students : NSObject@end@implementation Students@end#pragma mark - 动物类@interface Bird : NSObject- (void)fly;@end@implementation Bird-(void)fly{NSLog(@"我会飞");}@end@interface Cat : NSObject@end@implementation Cat@end#pragma mark - 食物类@interface Apple : NSObject- (void)red;@end@implementation Apple-(void)red{NSLog(@"我是红色的");}@end@interface Bananer : NSObject@end@implementation Bananer@end#pragma mark - 程序入口函数int main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...NSLog(@"Hello, World!");}return 0;}
你可能会忘记的小细节
- 类的声明@interface与类的实现@implementation不能嵌套使用
- 类必须先声明再实现
- 类的声明与实现必须同时存在。特殊情况下,可以没有声明,而只有实现,但不推荐这种写法
- 类的声明必须放在使用该类的语法的前面,类的实现可以放在使用该类的语法的前面或后面
- 属性名以下划线开头,类名首字母大写(规范)
- 属性不允许声明时初始化
- OC方法必须通过创建对象,由对象来进行调用;函数是可以直接调用的
- 方法只有声明没有实现,运行是会报错的
将类写在一个模块中,便于代码的维护、团队开发
一个模块,至少包含两个文件:
- .h 头文件 写类的声明
- .m 实现文件 写类的实现
在模块文件夹下新建文件
创建一个新的Cocoa Class文件
系统会默认建立.h和.m模板文件
.h 头文件默认代码
//// Person.h// MyObjective-C//// Created by ZhaiKun on 2017/10/10.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject@end
.m 类的实现文件默认代码
//// Person.m// MyObjective-C//// Created by ZhaiKun on 2017/10/10.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import "Person.h"@implementation Person@end
修改.h头文件中的代码
//// Person.h// MyObjective-C//// Created by ZhaiKun on 2017/10/10.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject{@publicNSString *_name;int _age;}- (void)run;@end
再修改.m类实现文件中的代码
//// Person.m// MyObjective-C//// Created by ZhaiKun on 2017/10/10.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import "Person.h"@implementation Person- (void)run{NSLog(@"我跑的很快、、、");}@end
在程序的入口函数main.m文件中进行调用
//// main.m// ClassModuleDevelop 类的模块开发演示//// Created by ZhaiKun on 2017/10/10.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>#import "Person.h"//导入头文件,使用文件中的类int main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...Person *person = [Person new];[person run];}return 0;}
建议在.h头文件中只写一个类的声明,.m文件只写一个类的实现
