主要内容:
分类
NSArray
创建字符串对象
网址解析—取主机名
//
// main.m
// 01- 分类
//
#import <Foundation/Foundation.h>
/*
扩充类的功能:继承:要增加新类
分类(类别):不用增加新类
格式:@interface 类名(分类的名称)
方法的声明
@end
@implementaion 类名(分类的名称)
方法的实现
@end
注意事项:1.类别里面只能写方法 2.类别的名称写在类名后面的()里面
作用:1.扩充系统类,增加类的功能。
2.扩充现有类,增加现有类的功能,将复杂的功能进行分组,分别放入不同的类别里面,达到条理清晰,增加可读性,操作性。
特点:类别里面的方法在使用的时候与本类中的方法同
使用:1.创建分类
2.在要使用分类方法的文件中引入分类的头文件
3.用分类所在的类直接调用分类的方法即可
匿名分类:
格式:@interface 类名()
成员变量的声明//私有的成员变量
方法的声明//私有的
@end
匿名分类的实现放在原类的实现里面
注意:1.类名后面的()里为空 2.匿名分类的里面可以声明成员变量
使用:放在。m文件里面,实现文件的上面
作用:扩充类的功能,声明一些私有的成员变量及方法
*/
//@interface NSString (fz)
//
//@end
//
//@implementation NSString (fz)
//
//
//@end
#import "NSString+fz.h"
#import "Person+chinese.h"
#import "Person+english.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *string = [NSString fzString:@"I Love You"];
NSLog(@"%@",string);
[Person studyEnglish];
[Person studyChinese];
}
return 0;
}
//
// main.m
// 01-NSArray
//
#import <Foundation/Foundation.h>
#import "Car.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
/*
数组 : 与c的数组的区别
定义:c的数组:存储的时相同的简单数据类型的有序集合
oc的数组:存储的是相同或不同的对象类型的有序集合。
区分: c的数组 oc的数组:
c的数组是简单数据类型 oc的数组是对象
简单数据类型 对象
相同的 相同或不同
都是有序的 有序的
*/
char *cStr = "good";
NSArray *array = [NSArray arrayWithObjects:@"good",@"33", nil];
NSLog(@"cStr:%s,array:%@",cStr,array);
//oc的数组 :分类:可变数组,不可变数组
//注意:数组以nil结尾
//先看不可变数组
//创建
//1.创建空的
NSArray *array1 = [NSArray array];
//2.通过对象方法创建
NSArray *array2 = [[NSArray alloc]initWithObjects:@"11",@"22",@"33", nil];
//通过其他的数组创建
NSArray *array3 = [[NSArray alloc]initWithArray:array2];
//3.通过类方法
NSArray *array4 = [NSArray arrayWithArray:array2];
NSArray *array5 = [NSArray arrayWithObjects:@"44",@"55",@"66", nil];
NSArray *array6 = [NSArray arrayWithObject:@"yige"];
//4.简便方法
//[]里面是数组元素,
NSArray *array7 = @[@"88",@"99"];
//取值
//取一个值
//注意:不要越界
NSString *string = [array5 objectAtIndex:1];
NSString *string1 = array5[1];
NSLog(@"string:%@,string1:%@",string,string1);
//取多个值
//<#(NSIndexSet *)#> 是一个索引集合类,可以进行索引的设置
//包含数组的0,1两个索引值
NSIndexSet *set = [[NSIndexSet alloc]initWithIndexesInRange:NSMakeRange(0, 2)];
NSArray *subArray = [array5 objectsAtIndexes:set];
NSLog(@"subArray:%@",subArray);
//遍历
// for (int i = 0; i< [array5 count]; i++) {
// NSLog(@"%@",array5[i]);
// }
//快速遍历
//原理:从 in 后面的数组中逐一的取出元素,赋给 in 前面的对象指针
for (NSString *string in array5) {
NSLog(@"%@",string);
}
//例子:宝马(红色) 凯迪拉克(白色) 法拉利(金色)
Car *car1 = [[Car alloc]initWithColor:ColorWithRed andName:@"baoma"];
Car *car2 = [[Car alloc]initWithColor:ColorWithWhite andName:@"kaidilake"];
Car *car3 = [[Car alloc]initWithColor:ColorWithGolden andName:@"falali"];
//@[]只能用于创建不可变数组
NSArray *arrayCar = @[car1,car2,car3];
//快速遍历
for (Car *car in arrayCar) {
NSLog(@"%@的颜色是:%i",car.name,car.color);
}
}
return 0;
}
//
// main.m
// 01-网址解析-取主机名
//
// Created by zhaokai on 14-11-27.
// Copyright (c) 2014年 zhaokai. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
http://www.mobiletrain.org/index/abc/bcd/xxx/aaa?ab=xx
*/
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *string = @"http://www.mobiletrain.org/index/abc/bcd/xxx/aaa?ab=xx";
//取出//所在的范围
NSRange range1 = [string rangeOfString:@"//"];
//www.mobiletrain.org/index/abc/bcd/xxx/aaa?ab=xx
NSString *subString1 = [string substringFromIndex:range1.location + 2];
NSArray *array = [subString1 componentsSeparatedByString:@"/"];
//www.mobiletrain.org
NSString *subString2 = [array objectAtIndex:0];
NSArray *array1 = [subString2 componentsSeparatedByString:@"."];
//判断数组的元素个数,根据元素个数判断是否需要增加www.
if ([array1 count] < 3) {
subString2 = [@"www." stringByAppendingString:subString2];
}
NSLog(@"subString2:%@",subString2);
}
return 0;
}
//
// main.m
// 02-取端口号
//
#import <Foundation/Foundation.h>
/**
http://www.baidu.com:1234/s?wd=ios&rsv_sug4=82&inputT=802
*/
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *urlString = @"http://www.baidu.com:1234/s?wd=ios&rsv_sug4=82&inputT=802";
//先判读
BOOL isPre = [urlString hasPrefix:@"http:"];
//保存最后的 字符串
NSString *subString5 = [[NSString alloc]init];
NSString *subString = [[NSString alloc]init];
if (isPre) {
NSArray *array = [urlString componentsSeparatedByString:@"//"];
//www.baidu.com:1234/s?wd=ios&rsv_sug4=82&inputT=802
subString = [array objectAtIndex:1];
}else{
subString = urlString;
}
NSRange range = [subString rangeOfString:@"/"];
//www.baidu.com:1234
NSString *subString2 = [subString substringToIndex:range.location];
NSRange range1 = [subString2 rangeOfString:@":"];
if (range1.location != NSNotFound) {
subString5 = [subString2 substringFromIndex:range1.location+1];
}else{
subString5 = @"80";
}
NSLog(@"subString5:%@",subString5);
}
return 0;
}