1. 程式人生 > >OC基礎-Foundation——常用結構體 (NSRange 、NSPoint、NSsize、NSRect)

OC基礎-Foundation——常用結構體 (NSRange 、NSPoint、NSsize、NSRect)

Oc為我們提供了四個結構體,定義的變數可以存在棧上和堆上。
分別是:範圍:NSRange ,  幾體資料型別 : 點(NSPoint) 尺寸(NSsize) 區域(NSRect);

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<一> NSRange:   用來表示相關事物的範圍。


 結構體原形:typedefstruct _NSRange
        {
           NSUInteger location;
           NSUInteger length;
        }NSRange;

NSRange:(用於儲存單詞或語句,在裡面的位置)
location:起始位置,
length:元素個數。
NSRange,是結構體,不是類,定義的變數不需要加*
三種賦值方式:
       NSRange range;
        //c語言結構體變數的賦值的方法
        range.location=17;
        range.length=4;
        NSLog(@"%lu %lu",range.location, range.length);

        //c語言結構體變數初始化的方法
      NSRange range1={17,4};
       NSLog(@"%lu %lu",range1.location, range1.length);


        //oc的賦值方法 //最常用
        range=NSMakeRange(17,4);
        NSLog(@"%lu %lu",range1.location, range1.length);

cocoa提供的一個快捷函式NSMakeRange();
使用NSMakeRange()的好處是可以在任何能夠使用函式的地方使用它,例如在方法呼叫中將其當成引數傳遞。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<二>NSPoint 代帶平面上的點
結構體原形:
typedefstruct  _NSPoint
        {
           float x;
           float y;
        }NSPoint;

三種賦值方式:
        NSPoint point;
        point.x=10;
        point.y=20;
       NSLog(@"%f,%f",point.x,point.y);
        
      NSPoint point1={10.3,20.6};
      NSLog(@"%f,%f",point1.x,point1.y);
        
       point=NSMakePoint(10.5,11.3);
       NSLog(@"%f,%f",point.x,point.y);
注:x,y是值是float型別的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<三>   NSSize 用來儲存長度和寬度。尺寸。

結構體原形:
typedef struct _NSSize
        {
           float width;
           float height;
        }NSSize;


三種賦值方式:
        NSSize size;
        size.width=15;
        size.height=20;
       NSLog(@"%f %f",size.width,size.height);
        
       NSSize size1={15,20};
       NSLog(@"%f %f",size1.width,size1.height);
        
        size=NSMakeSize(20,30);
       NSLog(@"%f %f",size.width,size.height);


--------------------------------------------------------------------------------------------------------------
<四>   NSRect 用來表示區域。
結構體原形:
typedef struct _NSRect
        {
           NSPoint origin;
           NSSize  size;
        }NSRect;

三種賦值方式:
NSRect rect;
        rect.origin.x=15;
        rect.origin.y=20;
        rect.size.width=8;
        rect.size.height=15;
        
       NSRect rect1={15,20,8,15};
        
        rect =NSMakeRect(15,20,15,20);

         NSSize size=NSMakeSize(50,60);
       NSLog(@"%f  %f ",size.width,size.height);
       NSRect rect=NSMakeRect(5.3,4.6, 20.5, 40.5);
       NSLog(@"%f  %f  %f  %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);



#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
一般的CGPoint之類可以直接用,但是比較高階的函式需要加入CoreGraph框架
<img src="https://img-blog.csdn.net/20150428234421172?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFvamllMTAyMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

        NSRange range=NSMakeRange(50, 60);
        NSString *rangeString=NSStringFromRange(range);
        NSLog(@"%@",rangeString);
        
        //NSPoint/CGPoing 是一樣的
        NSPoint point=NSMakePoint(0, 0);
        //CGPoint dd=CGPointMake(0, 0);
        NSString *pointString=NSStringFromPoint(point);
        NSLog(@"%@",pointString);
        
        //CGSize/NSSize是一樣的
        CGSize size=CGSizeMake(300, 200);
        //NSSize size1=NSMakeSize(300, 200);
        NSString *sizeString=NSStringFromSize(size);
        NSLog(@"%@",sizeString);
        
        //CGRect/NSRect是一樣的
        CGRect rect=CGRectMake(0,0, 80, 90);
        //NSRect rect1=NSMakeRect(0, 0, 50, 60);
        NSString *rectString=NSStringFromRect(rect);
        NSLog(@"%@",rectString);
        
        //表示的都是零
        CGPointZero;
        CGSizeZero;
        CGRectZero;
        //判斷是否相等
        //使用這些函式的前提是新增CoreGraphics 框架
       BOOL b= CGRectEqualToRect(CGRectMake(0, 0, 80, 80), CGRectMake(0, 0, 80, 80));
        CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);
        CGPointEqualToPoint(<#CGPoint point1#>, <#CGPoint point2#>);
        //判斷左邊是否包含右邊的
        CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
    
        
    
    
    
    
    
    
    }
    return 0;
}

相關推薦

OC基礎-Foundation——常用結構 NSRange NSPointNSsizeNSRect

Oc為我們提供了四個結構體,定義的變數可以存在棧上和堆上。 分別是:範圍:NSRange , 幾體資料型別 : 點(NSPoint) 尺寸(NSsize) 區域(NSRect); ---------------------------------------------

iOS開發——oc——founctation中常用結構NSRangeNSPoint\CGPointNSSize\CGSizeNSRect\CGRect

          founcation中常用結構體 一、概述:    在foundation框架中,有一些關於位置和尺寸的結構體,在我們實際開發ios的時候會經常被使用到,所以這裡詳細講解下:    NSRange : 表示範圍    NSPoint\CGPoint

黑馬程式設計師——Foundation框架——常用結構NSRangeNSPoint

一,Foundation框架簡介: OC的Foundation框架包含了常用的類(所有類均是繼承自NSObject )和資料型別(結構體、列舉、等)。 路徑:/Applications/Xcode.app/Contents/Developer/Platforms/iPh

c語言基礎語法六——結構完結

1;關於c語言結構體的引入; 在前面已經介紹了整形(int,long,….),浮點型(flaot,double),字元型(char),還介紹了陣列(儲存一組具有相同型別的資料),字串。但是在實際問題中只有這些資料型別是不夠的,有時候我們需要其中的幾種一起來修飾

常用結構NSRange用法

定義 NSRange在官方文件中如是定義:A structure used to describe a portion of a series—such as characters in a string or objects in an NSArray ob

iOS基礎foundation常用結構

------ 知之部落格 期待與您交流! -------     在Foundation中定義了很多常用結構體型別來簡化我們的日常開發,這些結構體完全採用Objective-C定義,和我們自己定義的結構體沒有任何區別,之所以由框架為我們提供完全是為了簡化我們的開發。

黑馬程式設計師——OC基礎---Foundation框架之結構

一、概述 Foundation—基礎框架。框架中包含了很多開發中常用的資料型別,如結構體,列舉,類等,是其他ios框架的基礎。 如果要想使用foundation框架中的資料型別,那麼包含它的主標頭檔案就可以了。 即#import #import &l

NSString - - 常用結構與字符串之間的轉化打印時可用

code cgrect net 字符 cgpoint mst cnblogs cgp affine CGRect、CGSize、UIEdgeInsets、UIOffset、CGPoint、NSRange等 UIGeometry.h 1 NSString *NSStr

【C#基礎】列舉Enum結構Struct委託Delegate

1.列舉(Enum) 確定數量,確定取值。方向(東南西北),性別(男女) 語法:[public] enum 列舉名 {     值1,     值2,     值3,     

Foundation框架: 3.常用結構

在前面我們已經學完了NSRange和NSPoint, 這次我們來學第三個常用結構體, 它就是NSSize, 也就是CGSize,CGSize在Foundation框架中表示的是寬高, 下面讓我們來看

小白學開發iOSOC_ 經常使用結構2015-08-14

轉換成 tracking 小白 epo idt rgb 表示範圍 dsm tor // // main.m // 經常使用結構體 // // Created by admin on 15/8/13. // Copyright (c) 2015年 admin.

Python基礎常用模塊

section signal server .section 通過 sub 實例 wait 配置文件 1.configparser模塊 該模塊是用來對文件進行讀寫操作,適用於格式與Windows ini 文件類似的文件,可以包含一個或多個節(section),每個節可以有多

java基礎基礎總結----- 常用DOS命令

擴展 ear mkdir jar文件 方法 常用 directory 加載 rect 常用DOS命令 dir(directory):列出當前目錄下的文件以及文件夾 mkdir (make directory) : 創建目錄 rd (remove directory):

iOS 的視圖層次結構繼承關系及常用結構探討

typedef round tof 圖層 矩形 send 其它 mov uiscreen UIView表示屏幕上的一塊矩形區域,它在App中占有絕對重要的地位,因為IOS中幾乎所有可視化控件都是UIView的子類。負責渲染區域的內容,並且響應該區域內發生的觸摸事件

C語言結構Struct

C語言結構體(Struct) 在C語言中,可以使用結構體(Struct)來存放一組不同型別的資料。結構體的定義形式為: struct 結構體名{     結構體所包含的變數或陣列 }; 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可

rust學習筆記基礎篇4--結構變數宣告與繫結,所有權,借用,引用(霜之小刀)

rust學習筆記基礎篇4–結構體變數宣告與繫結,所有權,借用,引用(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 關於結構體的變數宣告 看過前面

結構或者聯合體變數的成員在記憶體裡是如何分佈的

1、概述 結構體變數的成員在記憶體裡是如何分佈的、成員先後順序始怎樣的、成員之間是連續的還是分散的、還是其他的什麼形式?這些問題既和軟體相關又和硬體相關。所謂軟體相關主要是指和具體的程式語言的編譯器的特性相關,編譯器為了優化CPU訪問記憶體的效率,在生成結構體成員的起始地址時遵循著某種特定的規則,這就是所謂

C 語言中的結構資料結構

結構體是在資料結構中經常使用的一類,下面對結構體進行一些知識的補充 結構體和陣列的區別 結構體的宣告 結構體宣告的基本形式 struct tag { member-list }variable-list; 引數解釋 tag:結構體的名字

C程式設計--結構結構和函式之間的引數使用

結構體型別(掌握點): 建立結構體型別 定義結構體型別變數 初始化結構體和引用結構體變數(3種方法,見下) 使用結構體陣列 結構體指標(重要) 指向結構體變數的指標 指向結構體陣列的指標 程式碼案例

go——結構

Go語言是一種靜態型別的程式語言。這意味著,編譯器需要在編譯時知曉程式裡每個值的型別。 如果提前知道型別資訊,編譯器就可以確保程式合理的使用值。 這有助於減少潛在的記憶體異常和bug,並且使編譯器有機會對程式碼進行一些效能優化,提高執行效率。 值的型別給編譯器提供了兩部分資訊:第一部分,需要分配多少記憶