——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);