黑马程序员——入学Blog10----Foundation框架常用的结构体与类
来源:互联网 发布:tplink isp数据库 编辑:程序博客网 时间:2024/04/29 10:22
-----------android培训、java培训、iOS培训、.Net培训、期待与您交流!------------
前面所写的main.m文件都有以下的这句
#import <Foundation/Foundation.h>代表着要引入Foundation框架的Foundation.h
/*Foundation.hCopyright (c) 1994-2012, Apple Inc. All rights reserved.*/#include <CoreFoundation/CoreFoundation.h>#import <Foundation/NSObjCRuntime.h>#import <Foundation/NSArray.h>#import <Foundation/NSAutoreleasePool.h>#import <Foundation/NSBundle.h>#import <Foundation/NSByteOrder.h>#import <Foundation/NSCalendar.h>#import <Foundation/NSCharacterSet.h>Foundation.h有Foundation框架中定义的各种类的声明,比如NSArray,NSAutoreleasePool。下面就介绍Foundation框架中常用的数据结构
1.NSRange
typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;
typedef unsigned long NSUInteger; // 无符号长整形NS是前缀,range有区间的意思,所以这个结构体表示的是一个以location为起始位置,长度为length的区间
2.NSPoint
typedef CGPoint NSPoint;/* Points. */struct CGPoint { CGFloat x; CGFloat y;};typedef struct CGPoint CGPoint;typedef CGFLOAT_TYPE CGFloat;# define CGFLOAT_TYPE doublePoint是点,所以这个结构体是一个二维坐标
3.NSSize
typedef CGSize NSSize;/* Sizes. */struct CGSize { CGFloat width; CGFloat height;};typedef struct CGSize CGSize;NSSize结构体中的变量类型与NSPoint一样,但从成员变量的命名可以看出,CGSize(NSSize)结构体代表的是矩形的宽度和高度
4.NSRect
typedef CGRect NSRect;/* Rectangles. */struct CGRect { CGPoint origin; CGSize size;};typedef struct CGRect CGRect;已知一个顶点坐标与矩形的宽高,那么矩形就被确定了,所以NSRect表示的是一个矩形
// main.m#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ @autoreleasepool { NSRange range = NSMakeRange(1, 1); NSPoint point = NSMakePoint(10, 20); NSSize size = NSMakeSize(30, 40); NSRect rect = NSMakeRect(point.x, point.y, size.width, size.height); NSLog(@"断点"); } return 0;}
5.NSString类
字符串是用途很广泛的数据类型,所以OC中定义字符串的方法就不止一种。
@autoreleasepool { NSRange range = NSMakeRange(1, 1); NSString *str1 = @"直接赋值"; NSString *str2 = [[NSString alloc] initWithString:str1]; // 利用对象方法 NSUInteger i = 5; NSString *str3 = [NSString stringWithFormat:@"变量%ld + 字符串组合",i]; NSLog(@"断点"); }
断点查看
还有其它很多种途径可以创建一个NSString对象,通过文件,通过URL等等。
// main.m#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ @autoreleasepool { NSRange range = NSMakeRange(1, 1); NSString *str1 = @"直接赋值"; NSString *str2 = [[NSString alloc] initWithString:str1]; // 利用对象方法 NSUInteger i = 5; NSString *str3 = [NSString stringWithFormat:@"变量%ld + 字符串组合",i]; NSString *str4 = @"test"; // 字符串截取 NSString *substr1 = [str1 substringFromIndex:1]; NSString *substr4 = [str4 substringFromIndex:1]; NSString *substr3 = [str3 substringWithRange:range]; // 根据指定区间截取字符串 NSLog(@"substr1 = %@, substr2 = %@",substr1,substr4); // 取得字符串指定索引的元素值 unichar charstr2 = [str2 characterAtIndex:1]; NSLog(@"charstr2 = %c",charstr2); // 字符串的替换 NSString *str5 = [str1 stringByReplacingOccurrencesOfString:@"直接" withString:@"hello"]; NSLog(@"字符串str5= %@",str5); // 字符串的大小写转换 NSString *str6 = [str4 uppercaseString]; NSString *str7 = [str6 lowercaseString]; // 字符串首字母大写 NSString *str8 = [str4 capitalizedString]; NSLog(@"str6 = %@,str7 = %@,str8 = %@",str6,str7,str8); // 比较两个字符串内容是否相同 BOOL isEqual = [str1 isEqualToString:str2]; NSLog(@"str1与str2字符串内容是否相同?%d",isEqual); // 两个字符串的大小比较 [str2 compare:str4]; // - (NSComparisonResult)compare:(NSString *)string; // typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending}; // 比较的结果是个枚举值{-1,0,1} // 判断字符串是否已指定字符串结尾 BOOL isApp = [str1 hasSuffix:@".app"]; NSLog(@"是否APP?%@",isApp?@"是":@"不是"); // 字符串搜索 NSRange range2 = [str3 rangeOfString:substr3]; NSLog(@"range2.location = %ld,rang2.length = %ld",range2.location,range2.length); // 根据指定字符分割字符串 NSArray *ary = [@"a,b,c,d,e,f,g" componentsSeparatedByString:@","]; // 利用Block迭代数组 [ary enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@",obj); }]; NSLog(@"断点"); } return 0;}运行结果:
分析:字符串的字串的计数不是按字符,而是按字数的,hasSuffix方法可以用来判断文件类型,NSString是不可变对象,也就是初始化是什么值,后面不会被改变。
6.NSMutableString类
可变的字符串类。
NSMutableString *mstr = [[NSMutableString alloc] initWithString:@"mutableString"]; // 添加字符串 [mstr appendFormat:@" hello"]; [mstr appendString:@" world"];
7.NSArray及NSMutableArray类
NSArray *array1 = @[@"1",@"2",ary]; // 数组元素可以是不同对象 NSArray *array2 = [[NSArray alloc] init]; // 空数组 NSArray *array3 = [[NSArray alloc] initWithArray:array1]; // 利用数组对象初始化数组 NSArray *array4 = [[NSArray alloc] initWithObjects:@"3",@"4", nil]; // nil是数组结束标志 // 获取元素个数 NSLog(@"array1有%ld个数组元素",[array1 count]); // 获取数组指定下标的元素 NSLog(@"数组array1中下标为1的元素为%@",[array1 objectAtIndex:1]);
运行结果:
NSArray和NSString一样都是不可变对象,而且NSArray也有一个对应的可变数组NSMutableArray
@interface NSMutableArray : NSArrayNSMutableArray类是NSArray对象的子类。
// 初始化可变数组 NSMutableArray *marray1 = [[NSMutableArray alloc] initWithArray:array1]; // 用NSArray对象初始化NSMutableArray对象 NSMutableArray *marray2 = [[NSMutableArray alloc] initWithObjects:@"123", nil]; // 添加元素到数组中 [marray2 addObject:@"a"]; NSLog(@"marray2 = %@",marray2); // 判断元素是否在数组中 BOOL isContains = [marray2 containsObject:@"123"]; NSLog(@"marray2数组中是否包含OC字符串123?%@",isContains?@"在":@"不在"); // 将元素插入数组指定位置 [marray2 insertObject:@"456" atIndex:1]; NSLog(@"marray2 = %@",marray2);运行结果:
添加的数组元素默认会添加到数组的最后
8.NSSet类
NSSet和NSArray有相似之处,都能存储不同的对象的地址,不过NSArray是有序的,NSSet是无序的
NSSet *set1 = [NSSet set]; // 创建一个空的Set对象 NSSet *set2 = [NSSet setWithArray:array1]; // 用数组作为参数创建一个Set对象 NSSet *set3 = [NSSet setWithObject:@"123"]; // 用对象作为参数创建一个Set对象 // 输出set2对象包含几个元素 NSLog(@"%ld",[set2 count]); // 判断元素是否在Set中 BOOL isInSet = [set3 containsObject:@"1234"]; NSLog(@"OC字符串1234是否在set3对象中? %@",isInSet?@"包含":@"不包含"); // 返回Set对象中的一个元素,如果Set对象为空则返回nil id s = [set2 anyObject]; NSLog(@"%@",s); // 判断连个Set对象是否相同 BOOL isEqual2 = [set1 isEqualToSet:set2]; NSLog(@"set1与set2是否相同?%@",isEqual2?@"相同":@"不相同");运行结果:
9. NSDictionary类
字典以键值对作为其中的元素,可以通过键(Key),快速得到值(Value)。
NSArray *province = [[NSArray alloc] initWithObjects:@"浙江",@"湖南",@"福建", nil]; NSArray *city = [[NSArray alloc] initWithObjects:@"杭州",@"长沙",@"福州", nil ]; NSDictionary *provincialCity = [[NSDictionary alloc] initWithObjects:city forKeys:province]; // key:省名 value:省会 // 遍历 [provincialCity enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"%@的省会是%@",key,obj); }]; // 返回一个数组,其中包含所有的键 [provincialCity allKeys]; // 返回一个数组,其中包含所有的值 [provincialCity allValues]; // 根据key值返回value id v = [provincialCity objectForKey:@"浙江"]; NSLog(@"%@",v); // 初始化一个可变字典 NSMutableDictionary *mprovincialCity = [[NSMutableDictionary alloc] initWithDictionary:provincialCity]; // 添加一个键值对 [mprovincialCity setObject:@"武汉" forKey:@"湖北"]; NSLog(@"%@",mprovincialCity); // 删除一个键值对 [mprovincialCity removeObjectForKey:@"湖北"]; NSLog(@"%@",mprovincialCity);运行结果:
0 0
- 黑马程序员——入学Blog10----Foundation框架常用的结构体与类
- 黑马程序员——Foundation结构体和常用类
- 黑马程序员——OC学习笔记08 Foundation框架常用的几个结构体和类。
- 黑马程序员——Foundation框架——常用结构体(NSRange、NSPoint等)
- 黑马程序员——Foundation框架——常用结构体以及NSString相关
- 黑马程序员——Foundation框架——常用结构体
- 黑马程序员——foundation框架之结构体
- 黑马程序员——Foundation框架之结构体
- 16、黑马程序员-foundation框架—结构体
- 黑马程序员—08Foundation框架_结构体
- 黑马程序员-OC语言-Foundation框架中的常用结构体
- 黑马程序员——OC学习之Foundation框架常用类的常用方法
- 黑马程序员------Foundation框架------结构体
- 黑马程序员——OC基础学习(六)---Foundation框架的常用类
- 黑马程序员------foundation常用结构体
- 黑马程序员---Foundation之常用结构体
- 黑马程序员_OC Foundation框架重要结构体和类
- 黑马程序员-Foundation框架常用类小结
- 40个良好用户界面Tips
- oracle 同时更新(update)多个字段多个值
- android Gps 定位 百度地图集成方法详解-----编码
- android studio启动一直卡在fetching Android sdk compoment解决方法
- 对象中属性转成json格式报错java.lang.IllegalArgumentException at java.sql.Date.getHours(Date.java:182)
- 黑马程序员——入学Blog10----Foundation框架常用的结构体与类
- 而感受到感受得到
- html模板(script标签使用)
- Windows XP下去除不相关的启动项!
- 跨网段ping的过程
- Xcode6 新功能(What’s New in Xcode)
- js校验常用方法
- mybatis的CRUD操作
- hadoop2.4.0伪分布式安装配置