@interface 类名 : 父类名
{
实例变量(特征)
一般用 类型名 + 变量名声明,需要额外的去写setter和getter方法以及实现
- (void) NSString *_name;
也可以由@property声明,省去getter和setter方法的声明和实现
@property NSString *name;
}
@interface 接口
@implementation 实现
为实例变量赋值的方法称作setter
- (void)setName:(NSString *)name;//声明部分
- (void)setName:(NSString *)name
{
_name = name;
}
读取实例变量值得方法称作getter
- (NSString *)Name;
- (NSString *)Name
{
return _name = name;
}
初始化方法
一.作用:
为刚创建的对象设置初值.
二.使用频率:
只使用一次,创建对象的时候,仅仅跟着alloc使用,以后再也不使用
三.初始化方法的特点
1.是一个实例方法
2.通常以init单词开头.注意:我所谓的通常指的是永远,始终
3.初始化方法有一个instancetype类型的返回值,返回的是初始化好的对象.(本质上是对象的首地址)
4.初始化方法中往往都会先调用父类(继承来)的初始化方法.
四.学习初始化方法的目的
我们首先要全面的去了解一个雷,然后我们会使用各种各样的系统类库.系统的类里包含了初始化方法以及其他方法,了解初始化方法的特点,有助于我们使用系统的类.因为第一步就是创建对象,alloc和初始化方法.
我们自己也会创建这样或则那样的类,用于我们的综合练习或则项目.
熟悉的写一个类很重要.尤其是初始化方法是我们创建对象时第一个使用的方法.
指定初始化方法:(一个类只有一个指定初始化方法)
如果有多个初始化方法,其中有一个初始化方法会被其他初始化方法调用,那么这个初始化方法就是指定初始化方法(一般是参数最多的)
- (void) initWithName:(NSString *)name age:(NSUInteger)age sex:(NSString *)age;
- (void) initWithName:(NSString *)name age:(NSUInteger)age sex:(NSString *)age
{
self = [super init];
if(self){
_name = name;
_sex = sex;
_age = age;
}
return self;
} 注:如果是直接继承自根类,写super init,否则init要换成自己写的初始化方法
self在oc理由两个作用.
1.调用本类的方法
2.代表方法的receiver(接收者).即:如果[t1 sayHi];在sayHi方法实现里面用到了self,那么self代之的t1.
注意:self是一个对象
super在oc里面有一个作用.
1.调用父类继承过来的方法
注意:super仅仅是一个关键字,告诉编译器我要使用父类继承过来的方法.super不是对象,不能代指receiver.
"!!! assgin 一般用于非对象的类型:所有的基本类型都适用
"- (void)setName:(NSString *)name
"{
" _name = name;
"}
"- (NSString *)name
"{
" return _name;
"}
"!!! retain 只要是对象类型都可以使用 retain
"- (void)setName:(NSString *)name
"{
" if (_name != name){
" [_name release];
" _name = [name retain];
" }
"}
"- (NSString *)name
"{
" return _name;
"}
"!!! copy //NSCopying才可以用
"- (void)setName:(NSString *)name
"{
" if (_name != name){
" [_name release];
" _name = [name copy];
" }
"}
"- (NSString *)name
"{
" return _name;
"}
1.如何使用一个类?
对于任何一个类,我们想要使用它,需要先创建对象,然后再使用这个对象去完成这样或那样的功能。
就像我们昨天讲的 Fraction 类,先要创建出来一个Fraction对象,然后才能 约分 以及打印信息。
2.如何创建对象
创建对象的方式有2种:
方式一:类名 * 对象 = [[类名 alloc ]初始化方法];
方式二:类名 * 对象 = [类名 便利构造器方法];
3.NSString的使用
NSString 是iOS中的不可变字符串,这个字符串一旦创建就不可以修改。
NSString 提供了很多有用的方法,比如:通过下表获取耽搁字符,求字符串长度。字符串拼接,替换,判断字符串是否相等。。。。
NSString 不可变字符串
NSString *string1 = [NSString stringWithFormat:@""];
NSString *string2 = [NSString stringWithFormat:@""];
NSString *string = [NSString stringWithFormat:@""];//创建字符串。
unichar stringa = [string1 characterAtIndex:1];//从字符串获取某个字符
NSUInteger stringb = [string length];//获取字符串长度
if ([string1 isEqualToString:string2]) { }else ;//判断字符串是否相等
NSString *string3 = [string1 substringToIndex:6];//截取到x个字符
NSString *string4 = [string1 substringFromIndex:7];//从x个开始截取
NSString *string5 = [string1 stringByReplacingOccurrencesOfString:@"" withString:@""]; //将xx替换为xx
NSString *string6 = [string1 stringByAppendingString:string2];//字符串与字符串拼接
NSString *string7 = [NSString stringWithFormat:@""];//拼接指定字符串
//NSMutableArray 可变字符串
NSMutableString *mString01 = [[NSMutableString alloc] initWithFormat:@""];//使用继承于父类的方法 创建对象。
NSUInteger mString01Length = [mString01 length];//长度
[mString01 appendString:@"!"];//拼接
[mString01 insertString:@"" atIndex:11];//插入
[mString01 setString:@"fkadsgh"];//重置 也可以说是赋值
NSMutableString *mString2 = [NSMutableString stringWithCapacity:30];//创建一个初始值为30的字符串。 此刻字符串里面没有任何字符,相当于创建了一个容量为30的空数组。
不可变字符串的修改操作,本质就是得到一个新的字符串。
不可变字符串的修改方法以string开头,有返回值。
可变字符串反之
记住以下规则:
如果方法是类方法用 类名调用.
如果方法是实例方法 用对象调用,前提是先创建对象.
方法需要什么类型的参数就提供什么类型的参数
方法返回什么类型的值,就定义什么类型的变量去接收.
NSNumber 数值对象
1.将C语言中的基本类型 转换为 NSNumber类型
2.将NSNumber对象还原为 C语言中的基本类型
int与NSNumber的互转
int m = 10;
// 将整型变量 m 转换为 数值对象 number1
NSNumber *number1 = [NSNumber numberWithInt:m];
NSLog(@"%@",number1);
// 将 数值对象 number1中的值 取出来
int n = [number1 intValue];
NSLog(@"%@",number1);
// double 与 NSNumber 的互转
NSNumber *number2 = [NSNumber numberWithDouble:2.5];
NSLog(@"%.2f",[number2 doubleValue]);
//其它类型的转换 同理
// NSValue 值对象
// NSValue与NSNumber不同,主要用来转结构体,指针等内容,并提供转回去的方法。
// NSRange与NSValue互转
NSValue *value1 = [NSValue valueWithRange:NSMakeRange(0, 4)];
NSLog(@"%@",value1);
NSRange range = [value1 rangeValue];
NSLog(@"%lu %lu ",range.location,range.length);