黑马程序员——OC中的类
来源:互联网 发布:java web 项目授权 编辑:程序博客网 时间:2024/05/17 05:02
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.ObjC跟C的区别与联系
首先 ObjC是一个面向对象的语言(封装、继承、多态)
2.ObjC中的类与对象
类由接口( XX.h
XX.h中声明类中的实例变量和功能
XX.m中实现.h中的功能
注意:
- 命名规则 类名首字母大写
Student 方法名首字母小写(驼峰)-(void)sayHi - -
实例方法 + 类方法
3.对象的创建和使用
要创建一个类的对象,即要做3件事:对象的声明、分配内存空间、对象的初始化
声明:@interface Student : NSObject
实例变量 int _age;
方法名:
-(void)setAge:(int)age;
-(int)getAge;
-(void)sayHi;
实现:#import "Student.h"
@implementation Farmer
-(void)setAge:(int)age
{
}
-(int)getAge
{
}
-(void)sayHi
{
调用:#import "Student.h"
Student *s=[[Student alloc]init];
[s sayHi];
属性:@property(non atomic,retain)NSString *name;
- 注意:
- @property()里边的属性
访问控制: readwrite
内存管理:assign 基本
线程安全:atomic
对象初始化三个方法
- 指定初始化赋值:
声明:
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate;
实现:
-(id)initWithName:(NSString *)name
{
}
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate
{
}
调用:
Rider *r=[[Rider alloc]initWithName:@"rider" andAge:25 andSex:@"M" andTalent:@"HP 30,MP 0,SP 30"andMate:nil];
注意:
- 通常以init开头 返回值为id
- 一个类只有一个指定初始化方法
- 指定的初始化方法是必须执行的
- 内部实现会调用到父类的初始化方法
便利构造器:
声明:
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate;
+(id)machineWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString*)talent andMate:(id)mate;
实现:
-(id)initWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString *)talent andMate:(id)mate
{
}
+(id)machineWithName:(NSString *)name andAge:(int)age andSex:(NSString *)sex andTalent:(NSString*)talent andMate:(id)mate
{
}
调用:
Machine *mac=[Machine machineWithName:@"machine" andAge:5 andSex:@"?" andTalent:@"HP 10,MP 0,PW 100"andMate:nil];
注意:
- 便利构造器方法以类名开头
- 类方法内部不能用实例变量
- 类方法只能以类(名)来调用
单例模式:
声明:
+(King *)defaultKing;
实现:
+(King *)defaultKing
{
}
调用:
King *k=[King defaultKing];
注意:
单例对象的类只能有一个实例
- 黑马程序员——OC中的类
- 黑马程序员——OC中的类
- 黑马程序员——OC中的类
- 黑马程序员——oc中的方法
- 黑马程序员——OC中的封装
- 黑马程序员——OC中的copy
- 黑马程序员——OC中的分类
- 黑马程序员——OC中的Foundation
- 黑马程序员——OC语言中的类和对象
- 黑马程序员-OC中的类
- 黑马程序员 --- OC中的类
- 黑马程序员——OC—OC中的面向对象
- 黑马程序员--OC--OC中的类
- 黑马程序员——oc类实例
- 黑马程序员——OC类方法
- ——黑马程序员——OC中的继承
- ——黑马程序员——OC中的基本概念
- ——黑马程序员——OC中的多态
- 浅析JavaScript闭包
- 各种字符串hash函数的效果对比
- git入门及常用操作指引
- hadoop 2.x 编译打包
- js控制浏览器全屏示例代码
- 黑马程序员——OC中的类
- N - I NEED A OFFER!
- 健壮且可读的安卓架构设计
- phonegap(3+)踩过的坑
- Google Guava Collections 使用介绍
- 将Maven项目转换成Eclipse支持的Java项目
- php4种排序
- Ubuntu 禁用Ctrl+Alt+↓ 等快捷键
- 新建的工作空间,开始工作前的电脑配置、Eclipse配置(总结)