1、分组导航
实现在同一个文件中,代码的快速定位。有如下代码文件:
// // 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
@end
int 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; }
|
实现效果

2、牛逼哄哄的你可能会忘记的小细节
2.1 类的声明@interface与类的实现@implementation不能嵌套使用
2.2 类必须先声明再实现
2.3 类的声明与实现必须同时存在。特殊情况下,可以没有声明,而只有实现,但不推荐这种写法
2.4 类的声明必须放在使用该类的语法的前面,类的实现可以放在使用该类的语法的前面或后面
2.5 属性名以下划线开头,类名首字母大写(规范)
2.6 属性不允许声明时初始化
2.7 OC方法必须通过创建对象,由对象来进行调用;函数是可以直接调用的
2.8 方法只有声明没有实现,运行是会报错的
3、将类写在一个模块中,便于代码的维护、团队开发
一个模块,至少包含两个文件:
.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 { @public NSString *_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文件只写一个类的实现