黑马程序员——Foundation框架之结构体

------- Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、基本知识

Foundation—基础框架。框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。

如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了。

即#import<foundation/foundation.h>

补充:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中是OC的。

二、常用的结构体介绍及简单使用

常用的结构体:

NSRange:表示范围

NSPoint/CGPoint:表示一个点

NSSize/CGSize:表示大小

NSRect/CGRect:表示一个矩形区域

三、NSRange

1、NSRange的定义:NSRange类型的结构体用于表示范围。

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

2、NSRange的使用

    NSString *str = @"I Love OC";
    //Love的位置
    NSRange r = {2, 4};
int main(int argc, const char * argv[])
{
     // 表示@"i love you"字符串中love的范围
     NSRange range = {2, 4}; // 在实际开发中不用这种方式,可读性差。
    
     NSRange range1 = {.location = 2, .length = 4}; // 不够精简,冗余。
    
    //常用的方法是使用Foundation框架自带函数
     NSRange range2 = NSMakeRange(2,4);

     return 0;
}
    
    NSString *str = @"I Love OC";
    // 查找某个字符串在str中的范围
    // 如果找不到,length=0,location= NSNotFound = -1
    NSRange range = [str rangeOfString:@"Love"];
    
    range = [str rangeOfString:@"java"];
    
    NSLog(@"location = %ld, length = %ld", range.location, range.length);

三、NSPoint/CGPoint

1、定义

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;
typedef CGPoint NSPoint;

2、创建方式:

//
//  main.m
//  01-结构体
//
//  Created by rui on 4/5/15.
//  Copyright (c) 2015 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    CGPoint p = CGPointMake(23, 24);
    NSPoint p2 = NSMakePoint(24, 25);

    return 0;
}

3、比较两个点是否相同

CGPointEqualToPoint(CGPoint, CGPoint);

四、NSSize/CGSize

1、定义

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;

2、创建方式:

//
//  main.m
//  01-结构体
//
//  Created by rui on 4/5/15.
//  Copyright (c) 2015 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    NSSize s = NSMakeSize(200, 69);
    CGSize s2 = CGSizeMake(100, 50);
    
    return 0;
}

3、比较两个CGSize是否相同

CGSizeEqualToSize(CGSize, CGSize);

五、NSRect/CGRect

1、定义

struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;
typedef CGRect NSRect;

2、创建方式:

//
//  main.m
//  01-结构体
//
//  Created by rui on 4/5/15.
//  Copyright (c) 2015 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    NSPoint p = NSMakePoint(100, 20);
    CGPoint p2 = CGPointMake(129, 240);
    
    NSSize s = NSMakeSize(200, 69);
    CGSize s2 = CGSizeMake(100, 50);
    
    NSRect r = NSMakeRect(100, 24, 100, 200);
    CGRect r1 = CGRectMake(50, 60, 70, 80);
    
    return 0;
}

3、常用方法:

比较两个CGRect是否相同

CGRectEqualToRect(CGRect, CGRect);

判断一个CGRect是否包含一个Point

CGRectContainsPoint(CGRect, CGPoint);

五、打印输出结构体

CGPoint输出:NSStringFromPoint()函数

CGSize输出:NSStringFromSize()函数

CGRect输出:NSStringFRomRect()函数

输出示例:

    NSString *strPoint = NSStringFromPoint(p);
    NSLog(@"%@", strPoint);
    
    NSString *strSize = NSStringFromSize(s);
    NSLog(@"%@", strSize);
    
    NSString *strRect = NSStringFromRect(r);
    NSLog(@"%@", strRect);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值