OC部分知识点(2)

@interface 类名 : 父类名

{

       实例变量(特征)

    一般用 类型名 + 变量名声明,需要额外的去写settergetter方法以及实现

    - (void) NSString *_name;

    

    也可以由@property声明,省去gettersetter方法的声明和实现

    @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要换成自己写的初始化方法


selfoc理由两个作用.

1.调用本类的方法

2.代表方法的receiver(接收者).:如果[t1 sayHi];sayHi方法实现里面用到了self,那么self代之的t1.

注意:self是一个对象


superoc里面有一个作用.

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语言中的基本类型


    intNSNumber的互转

    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 值对象

//    NSValueNSNumber不同,主要用来转结构体,指针等内容,并提供转回去的方法。


//    NSRangeNSValue互转

    NSValue *value1 = [NSValue valueWithRange:NSMakeRange(0, 4)];

    NSLog(@"%@",value1);

    NSRange range = [value1 rangeValue];

    NSLog(@"%lu %lu ",range.location,range.length);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值