iOS开发之oc(十六)--Foundation(1)结构体

(一)要掌握这些的运用

NSRange(location length) ---范围                                    range:范围

NSPoint\(相当于)CGPoint ---点

NSSize\CGSize   ---尺寸

NSRect\CGRect (CGPint CGSize) ---相当于一个矩形

其实,看官方文档更能清楚,这些的用法,需要声明方法就Jump to去看,在此,仅仅列出简单用法,作为了解

(二)代码示例

1.

void range()
{
    // @"i love oc"      // love的范围

    //NSRange r1 = {2, 4};     // 不用
    //NSRange r2 = {.location = 2, .length = 4};     // 不用
    //NSRange r3 = NSMakeRange(2, 4);  // 需要掌握,我们一般用这个,上面的两个可读性差不用
    NSString *str = @"i love oc";

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

2.

void psr()
{
    CGPoint p1 = NSMakePoint(10, 10);
    NSPoint p2 = CGPointMake(20, 20);    // 最常用

    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);

    CGRect r1 = CGRectMake(0, 0, 100, 50);   // 最常用(下面两个作为了解)

    CGRect r2 = { {0, 0}, {100, 90}};

    CGRect r3 = {p1, s2};

    // 使用CGPointZero等的前提是添加CoreGraphics框架
    CGRect r4 = {CGPointZero, CGSizeMake(100, 90)};

    // CGSizeZero
    // CGRectZero

    // 表示原点
    // CGPointZero == CGPointMake(0, 0)

    // 将结构体转为字符串
    //NSString *str = NSStringFromPoint(p1);

    //NSString *str = NSStringFromSize(s3);

    NSString *str = NSStringFromRect(r1);

    NSLog(@"%@", str);

    // 这样一个个打印很麻烦。所以,我们会---将结构体转为字符串
    // NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);
}

// CGRect myRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
//{
//    CGRect rect;
//    rect.origin.x = x;
//    rect.origin.y = y;
//    rect.size.width = width;
//    rect.size.height = height;
//
//    return rect;
//}

3.了解

#import <Foundation/Foundation.h>

int main()
{
/*
 NSRange(location length)
 NSPoint\(相当于)CGPoint
 NSSize\CGSize
 NSRect\CGRect (CGPint CGSize)
 */

    // 使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架

    // NextStep  Foundation 

    // 比较两个点是否相同(x、y)
    BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
    //CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
    //CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)

    // x (50, 150) y (40 , 90)
    BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));

    NSLog(@"%d", b2);

    return 0;
}
时间: 2024-10-08 10:23:15

iOS开发之oc(十六)--Foundation(1)结构体的相关文章

iOS开发之oc(六)--点语法

(一)点语法 1.利用点语法替代set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge:100]; int age = [stu age]; 点语法 stu.age = 100; int age = stu.age; 2.点语法的本质 >其实点语法的本质还是方法调用 >当使用点语法时,编译器会自动展开成相应的方法(编译器特性) 3.注意 死循环注意 - (void) setAge:(int)age { // 下面的代码会引发死循环

iOS开发之oc(二十二)--Foundation(7)NSValue、NSDate

NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue (一)NSValue值转换 #import <Foundation/Foundation.h> int main() { // 结构体--->OC对象 CGPoint p = CGPointMake(10, 10); // 将结构体转为Value对象 NSValue *value = [NSValue valueWithPoint:p]; // 将value转为对应的结构体 // [value pointValu

iOS开发之oc(十九)--Foundation(4) NSSet

NSSet作用:存放的是没有顺序的对象 NSSet和NSArray的对比 1> 共同点 •都是集合,都能存放多个OC对象 • 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int.char.float等,结构体,枚举) •本身都不可变,都有一个可变的子类 2> 不同点 •NSArray有顺序,NSSet没有顺序 代码示例 #import <Foundation/Foundation.h> int main() { NSMutableSet *s = [NSMutableS

ios开发之OC基础-类和对象

本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再将零散的知识点整理出来.这样的学习方法会带来更多的收获,同时要多做练习,按照思路,默写.改写代码.在这里,感谢欧阳坚老师,学习你的课程使我走上了ios的开发之路. 一定要明确一个要从事的方向,要不然就会感到迷茫.学习ios开发,并且从事ios开发这个行业,这就是我的选择.看到我的博客系列文章,其中大

iOS开发之oc(回顾笔记)--类与对象(1)

理论是枯燥的,所以有点长.哈哈哈~ 要学习一门语言,我们首先得了解它,那么 [什么是OC] objectiv-c  简称 OC,是一门基于C语言为基础编写而成的面向对象的语言.完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码: 可以使用OC开发Mac OS X平台和iOS平台的应用程序. (一)首先,先了解一下面向过程和面向对象: [面向过程] 1.面向过程的语言所有语句都是祈使句  2.面向过程的语言是数学逻辑的映射 3.面向过程语言的程序 = 数据 + 算法 C语言就是一门面

iOS开发之OC面试题总结

1.简述OC中内存管理机制 OC的内存管理机制是自动引用技术,内存管理的原则是谁开辟谁释放,分为ARC和MRC,MRC的话就是需要我们程序员手动管理内存,ARC不需要我们手动管理内存,系统会自行管理. 2.readwrite,readonly,assign,retain,copy,nonatomic .atomic.strong.weak属性的作用? readWrite读写特性, 可读可写. readonly只读, 只有getter, 没有setter. assign一般用于基本数据类型和ID类

IOS 阶段学习第十天笔记(结构体)

IOS学习(C语言)知识点整理 一.数据结构 1)概念:数据结构是指计算机程序中所操作的对象——数据以及数据元素之间的相互关系和运算. 2)结构体必须有struct 关键字修饰. 实例代码: 1 struct Person{ 2 char name[20]; 3 int age; 4 float height; 5 }; 6 7 int main(){ 8 struct Person Tom={"Tom",22,180};//struct Person 是数据结构 9 //Tom 是变

iOS开发之oc(二十)--Foundation(5)NSDictionary

/*  集合  1.NSArray\NSMutableArray •有序 •快速创建(不可变):@[obj1, obj2, obj3] •快速访问元素:数组名[i]   2.NSSet\NSMutableSet •无序  3.NSDictionary\NSMutableDictionary •无序 •快速创建(不可变):@{key1 : value1,  key2 : value2} •快速访问元素:字典名[key] */ NSDictionary:字典 代码示例 1> void create(

iOS开发之oc(十八)--Foundation(3)NSArray和NSMutableArray

NSArray :不可变数组 NSMutableArray : 可变数组 C语言数组:存放基本数据类型 OC数组:只能存放OC对象.不能存放非OC对象类型,比如int.struct.enum等 1.不可变数组的创建 void create() { /* int a = 5; int ages[10] = {1, 90, 89, 17}; // C数组 Person *p = [[Person alloc] init]; // OC数组(下面) Person *persons[5] = {p, [