黑马程序员—IOS基础之OC—static、self、NSString和NSLog讲解

来源:互联网 发布:windows10壁纸软件 编辑:程序博客网 时间:2024/05/24 04:22

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——

                 第一章 static讲解

static是OC中的一个关键字,它声明变量时指定静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。而且在声明变量前加上关键字static,还可以使局部变量保留多次调用一个方法所得的值。

在OC中static关键字的使用误区:

1)static不能声明实例变量,因为实例变量存在堆区,静态变量存在堆区,存储上会发生错误。2)static 也不能修饰方法。

示例:

#import <Foundation/Foundation.h>@interface Dog : NSObject{    //实例变量不能声明为静态   static int _speed;}//static也不能修饰方法static -(void)run;@end

static能在方法的实现中修饰局部变量

#import "Dog.h"@implementation Dog-(void)run{    //静态局部变量    static int num = 10;    NSLog(@"num = %d",num);    num++;}@end

static能在方法的实现中声明全局变量,只能在本文件中使用

#import "Dog.h"@implementation Dog//static声明全局变量,在其他文件中调用num的值不会变static int num = 10;-(void)run{    NSLog(@"num = %d",num);    num++;}@end
                    第二章 self和super的讲解

OC中提供两个保留字,用于在方法定义中引用执行该方法的对象。学习self和super之前,要清楚属性这一个概念。内部属性就是实例变量。
super发送消息可以将方法实现分发qi父类。可以重写一个已有的方法来修改或将它添加到现有的方法中,仍然可以将原始的方法纳入到修改后的方法当中。

[super init]//调用父类的方法

self的应用场景

1)用在类方法2)用在对象方法3)访问成员变量

1)在类方法中指代的是当前的类

#import <Foundation/Foundation.h>@interface Person : NSObject+(void)test;+(void)run;-(void)eat;@end@implementation Person+(void)test{    NSLog(@"+test!");}+(void)run{    NSLog(@"\n+人在走!");      //self指代的是当前的类    //self == Person    NSLog(@"\nself = %p",self);    //使用类调用类方法    [self test];    //此时self不能调用eat,eat是对象方法,而我们self是类    [self eat];//错误}-(void)eat{    NSLog(@"eat!");}@end

2)在对象方法中

@interface Person : NSObject-(void)run;-(void)eat:(NSString*) foodName;@end@implementation Person-(void)run{    NSLog(@"人在走!");}-(void)eat:(NSString*) foodName{    NSLog(@"人在吃%@",foodName);      //self在对象方法中使用指代的是调用当前对象方法的那个对象    //[p eat:@""];  self 指代的就是p    [self run];}@end

3)访问成员变量

#import <Foundation/Foundation.h>@interface Dog : NSObject{    int speed;}-(void)setSpeed:(int)speed;-(int)speed;@end@implementation Dog-(void)setSpeed:(int)speed{     speed = speed;    //self->speed访问的是实例变量    //加上self后表示访问的就是类的实例变量    //不加self访问的局部变量    self->speed = speed;}-(int)speed{    return speed;}@end
            第三章 NSString和NSLog的讲解

1)NSString讲解
NSString是OC中字符串处理的类。

 NSString *s = @"banzhang jiecao diaole "; //特殊用法 NSString *s1 = [NSString new];        s1 =@"jian le ma";//NSString是一个类

格式化创建字符串

//按照指定的格式创建NSString *imgName = [NSString stringWithFormat:@"xxxxxx%02d.jpg",3];

用一个已经存在的字符串创建一个新的字符串

//NSString是一个类NSString *s2 = [[NSString alloc] initWithString:s1];NSLog(@"s2 = %@",s2);

NSString长度的计算

NSString *s1 = @"ban";//使用length,NSUInteger长整型的类型NSUInteger len = [s1 length];

2)NSLog讲解
NSLog相当于C语言中的pringtf函数
NSLog的格式:

NSLog(@"格式化字符串",输出列表);//注意:输出字符串时格式和C不一样,使用%@输出NSLog(@"%@",s);
0 0
原创粉丝点击