#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//NSString是oc中字符串处理的类
//1,创建一个字符串
NSString *s = @"welcome to itcast";//特殊用法
//2,输出一个字符串
NSLog(@"%@",s);
//NSString是一个类
NSString*s1 =[NSString new];
s1 =@"jian le ma";
NSLog(@"%@",s1);
//3,创建字符串的第三种用法
//格式化创建字符串(按照指定的格式创建字符串)
//NSString *imgName = [NSString stringWithFormat:@"xxxxxxxxxx%02d.jpg",i];
/*for (int i =0; i<10; i++)
{
NSString *imgName = [NSString stringWithFormat:@"xxxxxxxxxx%02d.jpg",i];
NSLog(@"%@",imgName);
}*/
//用一个已经存在的字符串创建一个新的字符串
NSString *s2 = [[NSString alloc] initWithString :s1 ];
NSLog(@"s2 = %@",s2);
}
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//计算NSString字符串的长度
//1)字符串是纯英文的
NSString *s1 =@"i donot care";
NSUInteger len = [s1 length];
NSLog(@"len = %ld",len);//12
//不包含‘\0’
// 2)字符串是纯中文
//oc字符串中中英文都是一个字符串
NSString *s2 =@"我不关心";//4
len = [s2 length];
//3)中英文混合
NSString *s3 =@"班长!abc";//6
len = [s3 length];
NSLog(@"len = %ld",len);
//在C语言UTF-8编码中一个汉字占三个字节
char *s ="我不关心";
// char *s ="abc";
//int len1 =strlen(s);
printf("len = %ld",strlen(s));//3 //12
}
return 0;
}
类方法:
+开头的方法(定义的过程和对象方法一致,只不过+开头)
类方法的调用:
[类名 方法名];
对比学习:
Dog类
-(void)run;
想调用run方法,dog * dog = [Dog new]; [dog run];
Dog类r
+(void)run;类方法
想调用run方法, [Dog run];
@interface Car : NSObject
{
@public
int _speed;
}
-(void)run;
+(void)run;
+(void)run:(int)speed;
@end
@implementation Car
-(void)run{
//对象方法中可以调用其他的对象方法
//1)当前对象方法中创建对象(可以是当前类的也可以是其他类的对象),使用新创建的对象调用对象方法
//2)可以使用self
//3)对象可以作为方法的参数传递过来,可以使用传递过来的对象调用方法
NSLog(@"车正在以%d码的速度跑",_speed);
}
+(void)run{
//在类方法中不允许访问实例变量
//NSLog(@"车正在以%d码的速度跑",_speed);
NSLog(@"车正在跑");
//在类方法中可以调用其他方法
//1)可以直接使用本类类名(其他类名)调用
[Car run:250];
//2)可以使用self
[self run:100];
}
+(void)run:(int)speed{
NSLog(@"车正在以%d码的速度跑",speed);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car * car = [Car new];
car->_speed=200;
[car run];
[Car run];//类方法
[Car run:230];
}
return 0;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建对象
Car *car1 = [Car new];
car1->_speed = 100;
[car1 start];
//[Car new] 实质上是对象的存储空间
//匿名类(匿名对象)时候用
//匿名类的第一种使用方法
//1,使用匿名类访问实例变量 (能,但只能正确访问一次)
//以后再访问,实际上是访问新的空间了
[Car new]->_speed = 250;
NSLog(@"_speed = %d",[Car new]->_speed = 250);//0
//2,使用匿名的类,可以调用方法
[[Car new] stop]; //可以
[[Car alloc] init]; //等价于[Car new];
//使用alloc init的方式调用stop方法
[[[Car alloc] init] stop];
}
return 0;
}
Person *p = [[Person alloc] init];
//创建一个车
Car *car = [Car new];
car->_speed = 80;
[p goHome:car];
//1,匿名类作为方法的参数使用
[p goHome:[Car new]];
//匿名类调用方法,参数又是匿名类
[[Person new] goHome:[Car new]];