在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等- //
- // main.m
- // FoundationFramework
- //
- // Created by Kenshin Cui on 14-2-16.
- // Copyright (c) 2014年 Kenshin Cui. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- /*NSRange表示一个范围*/
- void test1(){
- NSRange rg={3,5};//第一参数是起始位置第二个参数是长度
- //NSRange rg;
- //rg.location=3;
- //rg.length=5;
- //NSRange rg={.location=3,.length=5};
- //常用下面的方式定义 NSRange rg2=NSMakeRange(3,5);//使用NSMakeRange定义一个NSRange
- //打印NSRange可以使用Foundation中方法 NSLog(@"rg2 is %@", NSStringFromRange(rg2));//注意不能直接NSLog(@"rg2 is %@", rg2),因为rg2不是对象(准确的说%@是指针)而是结构体
- }
- /*NSPoint表示一个点*/
- void test2(){
- NSPoint p=NSMakePoint(10, 15);//NSPoint其实就是CGPoint
- //这种方式比较常见 NSPoint p2=CGPointMake(10, 15);
- NSLog(NSStringFromPoint(p2));
- }
- /*NSSize表示大小*/
- void test3(){
- NSSize s=NSMakeSize(10, 15);//NSSize其实就是CGSize
- //这种方式比较常见 CGSize s2=CGSizeMake(10, 15);
- NSLog(NSStringFromSize(s2));
- }
- /*NSRect表示一个矩形*/
- void test4(){
- NSRect r=NSMakeRect(10, 5, 100, 200);//NSRect其实就是CGRect
- //这种方式比较常见 NSRect r2=CGRectMake(10, 5, 100, 200);
- NSLog(NSStringFromRect(r2));
- }
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- test1();
- test2();
- test3();
- test4();
- } return 0;
- }
复制代码 可以看到对于常用结构体在Foundation框架中都有一个对应的make方法进行创建,这也是我们日后比较常用的操作;而且与之对应的还都有一个NSStringFromXX方法来进行字符串转换,方便我们调试。上面也提到NSSize其实就是CGSize,NSRect其实就是CGRect,我们可以通过查看代码进行确认,例如NSSize定义:
继续查看CGSize的代码:
|
|