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

——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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值