A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangshengjie 中级黑马   /  2015-3-14 19:36  /  694 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等
  1. //
  2. //  main.m
  3. //  FoundationFramework
  4. //
  5. //  Created by Kenshin Cui on 14-2-16.
  6. //  Copyright (c) 2014年 Kenshin Cui. All rights reserved.
  7. //

  8. #import <Foundation/Foundation.h>

  9. /*NSRange表示一个范围*/
  10. void test1(){
  11.     NSRange rg={3,5};//第一参数是起始位置第二个参数是长度
  12.     //NSRange rg;
  13.     //rg.location=3;
  14.     //rg.length=5;
  15.     //NSRange rg={.location=3,.length=5};
  16.     //常用下面的方式定义 NSRange rg2=NSMakeRange(3,5);//使用NSMakeRange定义一个NSRange
  17.     //打印NSRange可以使用Foundation中方法 NSLog(@"rg2 is %@", NSStringFromRange(rg2));//注意不能直接NSLog(@"rg2 is %@", rg2),因为rg2不是对象(准确的说%@是指针)而是结构体
  18. }
  19. /*NSPoint表示一个点*/
  20. void test2(){
  21.     NSPoint p=NSMakePoint(10, 15);//NSPoint其实就是CGPoint
  22.     //这种方式比较常见 NSPoint p2=CGPointMake(10, 15);
  23.     NSLog(NSStringFromPoint(p2));
  24. }
  25. /*NSSize表示大小*/
  26. void test3(){
  27.     NSSize s=NSMakeSize(10, 15);//NSSize其实就是CGSize
  28.     //这种方式比较常见 CGSize s2=CGSizeMake(10, 15);
  29.     NSLog(NSStringFromSize(s2));
  30. }
  31. /*NSRect表示一个矩形*/
  32. void test4(){
  33.     NSRect r=NSMakeRect(10, 5, 100, 200);//NSRect其实就是CGRect
  34.     //这种方式比较常见 NSRect r2=CGRectMake(10, 5, 100, 200);
  35.     NSLog(NSStringFromRect(r2));
  36. }

  37. int main(int argc, const char * argv[]) {
  38.     @autoreleasepool {
  39.         test1();
  40.         test2();
  41.         test3();
  42.         test4();
  43.     } return 0;
  44. }
复制代码
可以看到对于常用结构体在Foundation框架中都有一个对应的make方法进行创建,这也是我们日后比较常用的操作;而且与之对应的还都有一个NSStringFromXX方法来进行字符串转换,方便我们调试。上面也提到NSSize其实就是CGSize,NSRect其实就是CGRect,我们可以通过查看代码进行确认,例如NSSize定义:


继续查看CGSize的代码:


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马