黑马程序员 OC------- id类型: 构造方法学习
来源:互联网 发布:java 关闭 一个 进程 编辑:程序博客网 时间:2024/05/01 22:48
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
id类型
数据类型:
1.可以用来定义变量
2.可以用来当作参数
3.可以用来当作返回值
id类型是一个万能指针(可以保持任何对象的地址)
id相当于 NSObject *
id的本质 typedef struct objc_object *id;
id是一个动态类型,在运行时才确定id的真实类型
id类型还可以调用私有方法
id和NSObject *的区别:id调用子类特有的方法不用强制类型转换
构造方法
什么是构造方法:
构造方法主要是用来初始化成员变量
如果想让对象一创建出来就具备一些值,我们可以重写构造方法(init)
1.开辟存储空间 +alloc
2.初始化成员变量 -init
3.返回地址
Person *p = [Person new];就等同于
Person *p = [[Person alloc] init];
如果想让一个成员变量初始化就赋值:
可以写成例如下面的格式
- (id)init{
if (self = [super init]) {
_age = age;//成员变量赋值
return self;
}
枪类
#import <Foundation/Foundation.h>
@interface Gun : NSObject
@property int bulletCount;//子弹数量
/*
射击方法
*/
- (void)shoot;
@end
#import "Gun.h"
@implementation Gun
- (id)init
{
if (self = [superinit]) {
_bulletCount = 10;
}
return self;
}
- (void)shoot
{
if (_bulletCount >0) {
NSLog(@"开了一枪");
_bulletCount--;
}else
{
NSLog(@"请上子弹");
}
NSLog(@"剩余子弹 %d", _bulletCount);
}
@end
警察类
@interface Police :NSObject
@property Gun *gun;
// 打手枪
- (void)fire;
@end
#import "Police.h"
@implementation Police
- (id)init
{
// 1.一定要调用父类的init方法
self = [superinit];
// 2.一定要判断self是否为空
if (self) {
_gun = [[Gunalloc]init];
}
// 3.一定要返回self
return self;
}
- (void)fire
{
// OC中没有空指针异常,也就是给Nil发送消息不会报错
[_gun shoot];
}
@end
#import "Police.h"
#import "Gun.h"
int main(int argc,constchar * argv[])
{
Police *p = [[Policealloc]init];
[p fire];
return 0;
}
- 黑马程序员 OC------- id类型: 构造方法学习
- 黑马程序员_OC构造方法和ID类型学习学习
- 黑马程序员--OC自学笔记---05点语法、@property、@synthesize、动态类型、id类型、响应方法、构造方法
- 黑马程序员——OC语言------id和构造方法
- 黑马视频学习笔记-OC-id、构造方法
- 黑马程序员-OC-构造方法
- 黑马程序员---OC构造方法
- [黑马程序员][OC]构造方法
- 黑马程序员--学习OC@property和构造方法
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)
- 黑马程序员——OC语言学习——关键字id、构造方法、Category-分类、类的本质、 description方法、 SEL方法
- 11、黑马程序员-OC语言构造方法
- 黑马程序员-oc中的构造方法
- 黑马程序员IOS-OC语言-构造方法
- 黑马程序员 - OC语言 - 重写构造方法
- 黑马程序员--OC--重写构造方法
- 08.黑马程序员-id指针、构造方法
- 第5周作业-贷款计算器程序
- Java List接口
- OpenStack最新版本Folsom架构解析
- 第四周作业——图的表示
- Oracle EBS - What happening when executing adpreclone.pl in DB and Apps Tier?
- 黑马程序员 OC------- id类型: 构造方法学习
- UI编程为何选择QT
- LDA最佳学习资料汇总
- unity 3D 场景缩放代码
- test
- STM32芯片ADC内部的CH17参考电压的用途(转)
- Oracle EBS - What happening when executing adcfgclone.pl in DB Tier as well as Apps Tier?
- Path Sum II
- Android电源管理分析