分组导航
实现在同一个文件中,代码的快速定位。有如下代码文件:
//
// 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;
}
你可能会忘记的小细节
- 类的声明@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
{
@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文件只写一个类的实现