OC基础 - 01类与对象
来源:互联网 发布:部落冲突打鱼软件 编辑:程序博客网 时间:2024/06/11 04:14
一 . 项目创建
(一). 创建步骤
1.打开Xcode,选择如下。
2.如图
3.如图
完成创建,如图
(二). main文件的结构
1.头文件:#import <Foundation/Foundation.h>
2 . #import:防止重复引用
#include:多次重复编译
@class 一半用在.h文件中防止相互引用,@class告诉编译器将它引用的类只是作为一种类型名,而这个类包含的变量和方法都不会被引入。
如果.m文件需要引用这个类的实体变量或者方法之类的,就在.m中import在@class中声明的类进来。
<>:导入的是系统的库
“”:导入的时自定义的一些文件
3 . @autoreleasepool
这个是自动释放池用于内存管理,详见后章
4.NSLog
NSLog和printf一样,用来打印信息,但他们区别:
(1). NSLog会自己加上换行符
(2). NSLog在Debug下会写到system.log(日志信息)中
(3). NSLog会自动加上时间和进程信息
(4). NSLog支持%@去打印一个对象类型
5 . @:
(1) . 作为OC关键字的起始
(2) . 使用%@可自动调用description方法对该对象进行描述,即打印对象信息
(3) .在iOS5之后,对部分数据类型的简写 比如:@(1) @”” @[] @{}等
二 . 类的创建
创建类的三种方式:
1.可以菜单栏file–new–file
2.选中工程文件,右键newfile
3.command + n
(一). 创建步骤
1.先用command+N创建类,OS X - Source - Cocoa Class。
2.Class:类名,首字母必须大(例:Hero);Subclass of:(从父类继承)父类名,NSObject;Lauguage:语言,OC。
确认保存地址后完成创建,此时左侧栏中会有一个Hero.m文件和Hero.h文件。
三 . 类的结构
一个类一般由一个.h文件和一个.m文件组成。
(一).声明文件 — “.h” 文件
在.h文件中,书写此类的成员变量,以及此类的方法声明。
(1).{ } 内定义类的成员变量
(2).{ }外的下方书写方法的声明
()内写的是该方法返回值的类型,instancetype表示该返回值可以是任意类型,void表示该返回值为空。
#import <Foundation/Foundation.h>//接口文件 类名 : 父类命@interface Hero : NSObject{ //创建对象类型变量带*,成员变量名前加_ NSString *_name; NSInteger _age; NSString *_gender;}@property (nonatomic,copy)NSString *name;//属性,详见后章/* -:实例方法(减号方法) 1.调用方式 main函数中:[对象 方法名] 2.格式 .h文件中: - (返回类型)方法名; - (返回类型)方法名参数描述名1:(参数类型)参数名; - (返回值类型)方法名参数描述名1:(参数类型)参数名 参数描述名2:(参数类型)参数名; 3.在方法实现中可以使用成员变量*/- (void)skill;//自定义init方法- (instancetype)initWithName:(NSString *)name age:(NSInteger)age gender:(NSString *)gender; /* +:类方法 1.调用方法 main 函数中:[类名 方法名] 2.格式 同上,- 换成 + 3.在方法实现中 不 可以使用成员变量*///便利构造法+ (Hero *)heroWithName:(NSString *)name age:(NSInteger)age gender:(NSString *)gender;@end
(二). 实现文件 — “.m “文件
在.h文件中声明的方法,需要在.m文件中实现 ,下面将介绍3中初始化方法:
1 . 重写init(-)
重写父类的方法不需要再.h文件中声明,若重写了父类的方法,系统在运行时会优先调用重写的方法。
2 . 自定义init方法(-)
在.h文件中先声明,方法命名要规范,最好以 “initWith…” 来命名。
3 . 便利方法(+)
在.h文件中先声明,方法命名要规范,最好以 “类名With…” 来命名。
#import "Hero.h"//实现文件.m@implementation Hero- (void)skill{ NSLog(@"name:%@打怪兽!",_name); }//重写init,直接在.m文件输入init导出索引即可重写- (instancetype)init{ self = [super init];//继承父类的init if (self) { _name = @"lili"; _age = 33; _gender = @"man"; } return self;}//自定义init方法- (instancetype)initWithName:(NSString *)name age:(NSInteger)age gender:(NSString *)gender{ self = [super init];//同样需要继承父类的init if (self) { _name = name; _age = age; _gender = gender; } return self;}//便利构造法+(Hero *)heroWithName:(NSString *)name age:(NSInteger)age gender:(NSString *)gender{ Hero *hero = [[Hero alloc]initWithName:name age:age gender:gender];//使用自定义init return hero;}@end
四 . main函数
与C语言不同的是
字符写法:@”字符”
最后command+R,运行查看打印结果
#import <Foundation/Foundation.h>#import "Hero.h"int main(int argc, const char * argv[]) { @autoreleasepool {#pragma mark - 01对象的创建 //分配内存空间 Hero *hero = [Hero alloc]; //初始化 hero = [hero init]; //合并: Hero *heroa = [[Hero alloc] init]; //new初始化 [[Hero alloc] init] = [Hero new];但是new只能调父类的init Hero *herob = [Hero new]; NSLog(@"nameHero = %@, nameHeroa = %@, nameHerob = %@",hero.name,heroa.name,herob.name);//重写init,所以有值,不重写为nil#pragma mark - 02方法的使用 //自定义init Hero *hero1 = [[Hero alloc] initWithName:@"ki" age:22 gender:@"man"]; NSLog(@"nameHero1 = %@",hero1.name); //便利构造法,使用类方法 Hero *hero2 = [Hero heroWithName:@"Ahri" age:14 gender:@"woman"]; NSLog(@"nameHero2 = %@",hero2.name); //使用实例方法 [hero skill]; } return 0;}
- OC基础 - 01类与对象
- OC基础 - 04 类与对象
- OC基础DAY02 - 类与对象
- 黑马程序员---OC基础---OC简介、OC与C的差异、类和对象与方法
- OC--类与对象
- OC---类与对象
- OC-类与对象
- 黑马程序员—OC语言基础—类与对象
- OC基础----类与对象、实例变量的可见度、继承
- OC基础:类和对象
- OC语言学习01-类与对象
- OC语言 OC初识-类与对象
- OC runtime 类与对象
- OC面向对象 类与对象
- OC基础——类和对象
- OC基础语法and类和对象
- 黑马程序员---OC基础---类和对象
- OC基础 -- 类创建一个对象
- 【Nginx入门系列】第一章 手把手带你搭建Nginx服务器
- 使用Qt Creator编译cpp遇到错误cc1plus.exe: out of memory allocating
- 对linux源码中thread_info的一点说明
- 【Nginx入门系列】第二章 外部无法访问Nginx服务器
- Codeforces 629B Far Relative’s Problem(简单区间贪心)
- OC基础 - 01类与对象
- Codeforces Round #343 (Div. 2) 629D. Babaei and Birthday Cake 线段树
- [LeetCode328] Odd Even Linked List
- Android自定义Toast总结(下)
- Pointers
- 【DP】scu4441
- python发送邮件示例
- 有关unrecognized selector sent to instance xxxxxxxxx的异常崩溃
- 【杭电】[2071]Max Num