//
// main.m
// LissionFour
//
// Created by scjy on 15/11/4.
// Copyright (c) 2015年第四周. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef struct student{
int height;
int weight;
}Student;
int main(int argc,constchar * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
/************ OC第四讲
NSString , NSArray , NSNumber
(这三个都是OC里边的类)
*************************/
/*1,
API(Application Programming Interface)
中文意思:应用程序编程接口
苹果每次升级iOS系统都会添加或更新大量的API接口,并提供相应的参考文档,
学会使用苹果的帮助文档是开发者必备的一项技能
(快捷键:系统键+上档键+0)
*/
/*
苹果API文档结构:Inherits from : 继承自哪个类
Conforms to : 遵循哪个协议
Framework : 属于哪个框架里的类
Availabilty : 从什么时候可以使用
Declared in : 声明在什么头文件里
Related documents : 相关文档
Sample code : 示例代码
//如何打开API文档:xcode -Window/help - Documents and API Reference(参考)
快速打开API文档:将鼠标停在类名或方法名上边,按option(或Alt)键 +鼠标左键,点击class Reference进入API文档
或者可以用command +鼠标左键,进入这个类的头文件,查看接口部分实例变量以及方法的定义。
*/
// 字符串:
/*
C语言中字符串由char(ASCII码)字符组成
OC的字符串是由unichar(Unicode)字符组成
NSString是不可变字符串,创建之后不能改变长度和内容
NSMutableString是可变字符串,创建之后可以修改内容
*/
//1,实例方法初始化 创建字符串
// NSString *str = @"南柯一梦";
// NSLog(@"%@",str);
// NSString *str0 = @"江户川柯南";
// NSLog(@"%@",str0);
// NSString *str = [[NSString alloc] initWithString:@"南柯一梦"];
// NSLog(@"%@",str);{这些注销的是原始方法}
//2,便利构造器方法 创建字符串
// NSString *str1 = @"我要饿了";
// NSLog(@"%@",str1);
// NSString *str1 = [NSString stringWithString:@"我饿了"];
// NSLog(@"%@",str1);{这些注销的是原始方法}
//求字符串长度
// NSUInteger length = str1.length;
// NSLog(@"length = %lu",length);
//
//拼接字符串
// NSString *str2 = [str stringByAppendingString:str1];
// NSLog(@"str2 = %@",str2);
//
// NSString *str3 = [str stringByAppendingFormat:@"%@%@%@",str,str1,str2];
// NSLog(@"str3 = %@",str3);
//
//替换字符串
// NSString *str4 = [str2 stringByReplacingOccurrencesOfString: str3 withString: str1];
// NSLog(@"str4 = %@",str4);
//
// NSString *str5 = [str1 stringByReplacingCharactersInRange:NSMakeRange(2, 2)withString:@"女神"];
// NSLog(@"str5 = %@",str5);
//
// //相等
// NSString *str6 = @"南柯一梦";
// if ([str isEqualToString:str6]) {
// NSLog(@"相等");
// }
// NSString *str6 = [[ NSString alloc]initWithString:@"南柯一梦"];
// if ([str isEqualToString:str6]) {
// NSLog(@"相等");
// }
// NSString *str6=@"stayhungry";
// NSString *str7=@"stayfoolish";
// NSString *str8=@"qiaobusi";
//
// if ([str6 isEqualToString:str7]==true) {
// NSLog(@"相等");
//
// }else NSLog(@"不相等");
//
// if ([str6 isEqualToString:str8]==false) {
// NSLog(@"不相等");
//
// }
//字符串比较
// NSComparisonResult result = [str compare:str1];
// if (result == NSOrderedSame) {
// NSLog(@"str == str1");
// }else if (result == NSOrderedAscending){
// NSLog(@"str > str1");
// }else if (result == NSOrderedDescending){
// NSLog(@"str < str1");}
// - (BOOL)hasSuffix:(NSString *)aString
// - (BOOL) hasSuffix:(NSString *)png;//检查字符串是否以png结尾
//判断图片是否以png结尾,是的话替换为jpg
// NSString *pictureName = @"tiger.png";
// NSString *newPic = [NSString string];
// if ([pictureName hasSuffix:@"png"]) {
// newPic = [pictureName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
// NSLog(@"newPic = %@",newPic);
// }
// NSMutableString
// NSMutableString *mstr = [[NSMutableString alloc]
// initWithString:@"此去经年,应是良辰好景虚设,便中有千种风情,更与何人说."];
//
//
// //拼接字符串
//
// [mstr appendFormat:@"当时只道是寻常"];
// NSLog(@"mstr = %@",mstr);
//
// //插入字符串
//
// [mstr insertString:@"花自飘零水自流" atIndex:4];
// NSLog(@"mstr = %@",mstr);
//
// //删除字符串
// [mstr deleteCharactersInRange:NSMakeRange(2, 7)];
// NSLog(@"mstr = %@",mstr);
//
//可变和不可变:不可变字符串的修改操作,本质就是得到一个新的字符串。不可变字符串的修改方法以string开头,有返回值。可变字符串的修改方法没有返回值,修改原字符串
//判断图片是否以png结尾,是的话替换为jpg,用 NSMutableString做
// NSMutableString *pictureName = @"tiger.png";
// if ([pictureName hasSuffix:@"png"]) {
// pictureName = [pictureName stringByReplacingOccurrencesOfString: @"png"withString: @"jpg"];
// NSLog(@"pictureName = %@",pictureName);
// }
//数组
/*
数组--有序集合
iOS中存放数据的容器类都成为集合
数组是有序集合,只能存放对象
数组有下标(index)的概念,靠index来索引元素,下标从零开始
数组分不可变数组(NSArray)和可变数组(NSMutableArray)*/
//初始化方法
// NSArray *array = [[NSArray alloc]initWithObjects:@"阿瑟·柯南·道尔",@"江户川柯南",@"福尔摩斯", nil];
// //便利构造器
// NSArray *array1 = [NSArray arrayWithObjects:@"纳兹",@"张鹏飞",@"张混蛋", nil];
//
//
// //获取元素个数 count
// NSLog(@"array元素个数%lu个",array.count);
// NSLog(@"array1元素个数%lu个",array1.count);
//
//
// //根据index获取对象 objectAtIndex
// NSLog(@"array[0] = %@",[array objectAtIndex:0]);
// for (NSString *string in array) {
// NSLog(@"array content is %@",string);
// }
//
//可变数组(NSMutableArray)
/*
*/
NSMutableArray *marray = [[NSMutableArrayalloc]initWithObjects:@"福尔摩斯",@"张鹏飞",@"张混蛋",@"柯南",@"江户川乱步",nil];
// //添加元素
// [marray addObject:@"狄仁杰"];
// for (int i = 0; i<marray.count; i++) {
// NSLog(@"marray[%d] = %@",i,marray[i]);
// }
//
// //插入元素
// [marray insertObject:@"宋慈" atIndex:2];
// for (int i = 0; i<marray.count; i++) {
// NSLog(@"marray[%d] = %@",i,marray[i]);
// }
//删除元素
[marray removeObjectAtIndex:3];
for (int i = 0; i<marray.count; i++) {
NSLog(@"marray[%d] = %@",i,marray[i]);
}
//
// //替换元素
// [marray replaceObjectAtIndex:2 withObject:@"元芳"];
// for (int i = 0; i<marray.count; i++) {
// NSLog(@"marray[%d] = %@",i,marray[i]);
// }
// //交换指定位置的两个元素
// [marray exchangeObjectAtIndex:2 withObjectAtIndex:1];
// for (int i = 0; i<marray.count; i++) {
// NSLog(@"marray[%d] = %@",i,marray[i]);
// }
//
//如何存储int,float,NSRange等的基本数据类型的值
/*
数组只能存放对象
需要存储整形或者结构体时怎么做呢?
存储:把整形或结构体转换为对象,将对象存入数组
读取:先读取对象,再将对象还原为整形或结构体*/
/*
NSNumber
数值对象
完成数组标量和对象类型的转换
基本类型(int,float等)转化为NSNumber
NSNumber转化为基本数据类型(int,float等)
*/
/*
NSVale
完成标量和对象类型的转换
结构体,指针等转换为 NSVale
NSVale转化为结构体,指针等
*/
// //把int类型转换为NSNumber对象类型存入数组
// NSNumber *objint=[NSNumber numberWithInt:132];
//
//把double类型转换为NSNumber对象类型存入数组
// NSNumber *objdouble=[NSNumber numberWithDouble:3.1415];
//
//把char类型转换为NSNumber对象类型存入数组
// NSString *objchar=[NSNumber numberWithChar:'c'];
//
//
// NSArray *array4=[NSArray arrayWithObjects:objint, objdouble,objchar,nil];
//
// //把数组元素取出来,用XXXValue再转换为原来类型
// int a=[[array4 objectAtIndex:0]intValue];
// NSLog(@"%d",a);
// for (int i=0; i<array4.count; i++) {
// NSLog(@"%@",array4[i]);
// }
// //自定的结构体Student
// Student stu={174,120};
// NSValue *stuvalue=[NSValue valueWithBytes:&stu objCType:@encode(Student)];
//
//
// NSValue *rangValue = [NSValue valueWithRange:NSMakeRange(3, 5)];
// NSValue *sizeValue = [NSValue valueWithRange:NSMakeRange(10, 30)];
// NSArray *array5 = [NSArray arrayWithObjects:rangValue,sizeValue,nil];
// NSRange rang = [[array5 objectAtIndex:0]rangeValue];
// CGSize size = [[array4 objectAtIndex:1]sizeValue];
// NSLog(@"rang.loc = %lu",rang.location);
// NSLog(@"rang.len = %lu",rang.length);
//
// Student stu1;
// [[array5 objectAtIndex:2]getValue:&stu1];
// NSLog(@"%d",stu1.height);
// NSLog(@"%d",stu1.weight);
//
//
}
return 0;
}