亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Objective-C基礎知識

2019-11-14 18:59:32
字體:
來源:轉載
供稿:網友

//————————————OC的發展歷程—————————————//

1980年,OC語言誕生。

1988年,OC語言庫誕生。

1996年,OC語言成為蘋果公司專用編程語言。

2004年,Mac OS X以“NS”為前綴(Mac OS X使用以UNIX為基礎的操作系統

2007年,蘋果公司發布了OC2.0版本。

 

//————————————OC的特點—————————————//

兼容性:在OC的代碼中可以有C++和C語句,它可以調用C的函數,也可以通過C++對象訪問方法。

字符串:通常情況下,OC使用Foundation框架的NSString類型的字符串。

類:定義類是OC的基本功能,OC的類聲明和實現包括兩個部分:接口部分和實現部分。

屬性:屬性是OC2.0提出的概念,它是替代對成員變量訪問的“讀取方法(getter)”和“設定方法(setter)”的手段。

分類:可以通過分類擴展父類的功能。

 

//————————————OC的編程思想——面向對象編程—————————————//

1.面向對象的三個基本特征:封裝、繼承和多態。

封裝就是把客觀事物封裝成抽象的類。

繼承就是從一般到特殊的過程。

多態提供了同一個接口名稱,通過覆蓋和重載實現不同的功能。

 

**********************

接口文件和實現文件

1.OC是一個面向對象的語言,所以整個OC程序是由一些類組成的。每個OC類包含兩大塊代碼,分別叫“接口”和“實現”。 

 

***********************

類和實例

1.就像現實世界中的對象一樣,在面向對象編程的世界中,每一個對象都屬于一個類型,這個類型稱為類。類定義了現實世界中的一些事物的抽象特點。在OC中,定義一個類的一般格式如下:

 

@interface Member : NSObject

{

    NSString *name;

    int age;

}

 

- (NSString *)name;

- (int)age;

- (void)setName:(NSString *)input;

- (void)setAge:(int)input;

 

@end

 

2.每個類的實例就是一個對象,例如:member就是Member類的對象:

    Member *member = [[Member alloc]init];

  類是對象的模型,對象是類的一個實例。類是一種邏輯結構,而對象是真正存在的物理實體。

3.面向對象的分析過程大致分為:劃分對象->抽象對象->將類組織成層次結構(通過繼承來完成)。

4.面向對象的程序設計就是使用類和實例進行設計與實現程序。

5.UIButton *button = [[UIButton allocinit];

在數據類型的右邊有一個星號,所有的OC對象變量都是指針類型的。

等號右邊的語句是創建一個對象,這是一個嵌套的方法調用。第一個調用的是UIButton的alloc方法,這是一個相對比較底層的調用,因為該方法其實是為UIButton變量申請一個內存空間。第二個調用的是新創建對象的init方法,這個init方法是初始化變量值。

 

 

**********************

消息和方法

1.在面向對象中,直接發給對象的一個命令稱為“消息”,而被調用的代碼稱為方法。給一個對象發送一個消息和調用一個對象的方法基本上同一回事。

2.方法的定義

    在OC中,一個方法是類的一部分。一個方法的聲明格式為:

    +或者- (返回類型)方法名:(參數類型)參數名;

    它包含三個方面:

        它是一個類方法還是一個實例方法?

        它的參數和返回值

        方法的名字。

3.類方法和實例方法

    3.1。類方法和實例方法是通過方法定義的“+”或“-”來區分的。

    3.2.類方法一般用于兩個目的:

        工廠方法:它是給類分配實例的方法。例如,UIFont類有一個類方法fontWithName:Size:。你提供一個名字和一個字體大小,這個UIFont類就返回一個UIFont實例。

        全局公用方法:一個類方法也可以是一個公用方法,這些公用方法可以被任何其他類來調用,而且不需要實例化。例如:UIFont類的familyNames方法返回機器上所安裝的字體信息。

4.調用方法

    4.1.在OC中,對象的屬性變量屬于對象的內部數據,通常需要訪問這些數據只能通過對象的方法來實現,方法是作用于屬性的函數。

    4.2.在OC中,把“調用一個函數”稱為“向一個對象發送一個消息”,或者稱為”調用方法“。調用方法的簡單格式是(假設沒有輸入參數):

        [實例 方法];

        或者是:[類名 方法];

    4.3.一個方法也可以返回值,可以把返回的值放在變量上保存,例如:變量=[實例 方法];

    4.4.在OC上,調用一個類或實例的方法,也稱為給這個類或實例發消息。類或實例稱為“接收方”。所以,調用方法的格式也可理解為:[接收方 消息];

    4.5.在術語上,整個表達式也叫做消息表達式。例如:

NSString *s2 = [s uppercaseString];//發送消息“uppercaseString”到s

    4.6.如果一個消息是一個帶有參數的方法(即在調用一個方法時,可能需要提供輸入參數),那么,每一個參數值跟在一個冒號后面。調用格式為:

[接收方 名字1:參數1 名字2:參數2 名字3:參數3 …];

在術語上,方法的名稱是”名字1:名字2:名字3…”.

    4.7.OC允許在一個方法中調用中嵌套另一個方法,如:

 [NSString stringWithFormat:[test fromat]];

        但是盡量避免在一行代碼里面嵌套調用兩個方法。因為這樣的話,代碼的可讀性不好。

    4.8.self類似于java的this,使用self可以調用本類中的方法。

 

 

***************************

實例變量

1.實例變量屬于一個對象。

2.從OC2.0開始,可以使用“.”來調用一個實例變量。如:aFraction.numerator。

 

**************************

創建實例的三種方法

1.間接創建實例

    如:NSString *s = [s2 uppercaseString];

2.直接創建實例

    發送一個alloc方法給一個類,從而直接創建這個類的實例。alloc類方法是在NSObject類上實現的,NSObject類是根類,其他類都從它這里繼承。在執行alloc之后,系統就為一個實例分配內存。

3.通過nib文件創建和初始化實例

 

****************************

對象聲明的語法:

類名 *var1, *var2,……….

但是要注意,這只是定義了一個指針變量,尚未為它所包含的數據獲得內存空間。在調用alloc方法之后,這些對象才獲得(分配)空間。例如:

Member *member;

member = [Member alloc];

在術語上,上述例子中的member稱為Member對象,或者稱為Member類的一個實例。另外,除了分配空間外,還需要調用init方法來給這個對象設置初值。

 

***************************

 

==:比較的是指針,而不是指向指針的內容。

self:這段代碼中正在起作用的實例。

 

 

//——————————————————OC注釋—————————————————//

1.屬性注釋

使用/**注釋*/的文檔注釋格式。這種注釋想較于//注釋的優點是此屬性可以在后面的引用時,在智能提示的下方顯示中文注釋。如圖:

 

在之后的調用時可以看到如下效果:

 

并且之后在維護寫完的代碼時,把光標定位在該屬性時可以在右側的quickhelp中快速看到此屬性的解釋。

 

此外,(1)從實際的開發角度看并不是所有的屬性都需要添加注釋,只要是屬性名能從英文直譯或者簡單明顯的屬性,不需要添加注釋。

    (2)以下方式需要添加注釋:

        (a).通過屬性名無法快速且明顯的了解該用途的屬性必須會添加注釋,如index到底是誰的index?

        (b).類似于狀態的標記可能有0,1,2三種情況的要講幾種情況的注釋一起寫入。

        (c).屬性名的英文直譯無法說清時。

2.普通注釋

行注釋:“//”

3.方法集注釋

內容分段:#PRagma mark 

其實,其中的注釋根本不用加,因為它都是英語組成的,通過閱讀就可看懂它的意思。

在Xcode中,使用以下方式可以將OC源代碼分割成不同的代碼塊。    

    #pragma mark - 注釋內容 

4.代碼塊注釋

    就是xcode中右下角代碼段的使用

5.優先級注釋

 

就是在代碼后面添加://$$$$$,當然可以修改。

然后需要找他們的時候,只需要在項目搜索里敲上就能快速定位。

 

 

//——————————————————OC的文件擴展名—————————————————//

.h:頭文件(也稱為接口文件)。頭文件包含類、類型、函數和常數的聲明。

.m:源代碼文件??梢园琽c和C代碼。

.mm:源代碼文件。帶有這種擴展名的源代碼文件,除了可以包含OC和C代碼外,還可以包含C++代碼。僅在你的OC代碼中確實需要使用C++類或者特性的時候才有這種擴展名。

 

//——————————————————OC的導入文件—————————————————//

1.使用#import包含頭文件

在C/C++中,為了防止頭文件重復包含,我們經常需要用如下代碼定義.h文件

    #ifndef _MYSOMETHING_H

    #define _MYSOMETHING_H

    。。。

    #endif

OC提供了一個預編譯指令#import來簡化#include的做法,使用#import,就不用在每個頭文件里定義上面的3行條件編譯語句。

當然,在OC中,還可以使用#include包含.h文件,但是,很顯然,使用#import更方便。

 

2.導入文件

在.h文件中導入其他的類,使用@class指令。

在.m文件中導入其他的類,使用#import指令。

 


我的CSDN博客地址:http://blog.csdn.net/qw963895582/article 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲日本成人女熟在线观看| 最好看的2019的中文字幕视频| 91麻豆国产语对白在线观看| 色婷婷久久一区二区| 亚洲精品在线看| 亚洲香蕉成视频在线观看| 国产日产欧美a一级在线| 日韩国产高清污视频在线观看| 日韩欧美在线中文字幕| 国产精品自产拍在线观看中文| 欧美日韩精品国产| 深夜精品寂寞黄网站在线观看| 欧美精品久久久久久久| 81精品国产乱码久久久久久| 日韩成人性视频| 两个人的视频www国产精品| 国产精品99久久久久久久久久久久| 欧美国产视频一区二区| 国产最新精品视频| 91久久久亚洲精品| 91chinesevideo永久地址| 中文字幕亚洲国产| 国产精品久久久久福利| 日韩在线观看免费全| 亚洲天堂av网| 日本一区二区在线免费播放| 欧美中文字幕精品| 国产精品情侣自拍| 国产精品91久久久| 91高清视频在线免费观看| 亚洲激情视频在线播放| 精品国产999| 国产精品男人的天堂| 永久免费毛片在线播放不卡| 日本亚洲欧洲色α| 欧美精品情趣视频| 久久伊人免费视频| 78m国产成人精品视频| 欧洲永久精品大片ww免费漫画| 91久久精品国产| 久久视频在线直播| 人人爽久久涩噜噜噜网站| 亚洲福利视频网站| 亚洲一区二区三区香蕉| 欧美亚洲另类激情另类| 91九色国产社区在线观看| 亚洲精品一区二三区不卡| 国产精品久久久久久影视| 亚洲xxx视频| 2021久久精品国产99国产精品| 亚洲香蕉成视频在线观看| 欧美激情乱人伦一区| 伊人久久综合97精品| 日韩成人激情视频| 久久久久久高潮国产精品视| 国产精品久久久久久亚洲影视| 欧美日韩国产第一页| 九九九久久久久久| 91精品久久久久久久久久入口| 韩国三级电影久久久久久| 美日韩精品免费观看视频| 中文字幕欧美在线| 久久久久久com| 北条麻妃一区二区在线观看| 久久激情视频免费观看| 久久伊人精品一区二区三区| 亚洲精品色婷婷福利天堂| 欧美大片第1页| 久久久精品一区二区| 在线精品播放av| 欧美日韩国产第一页| 狠狠做深爱婷婷久久综合一区| 欧美一区二区大胆人体摄影专业网站| 国产亚洲在线播放| 欧美激情第99页| 国产免费一区二区三区在线能观看| 九九热视频这里只有精品| 九九视频这里只有精品| 91系列在线观看| 亚洲精品美女在线| 在线精品视频视频中文字幕| 在线观看久久av| 欧美国产日韩一区二区在线观看| 欧美一级大片在线免费观看| 国产精品美女久久久免费| 在线观看精品国产视频| 欧美成人一二三| 91久久久久久久久久| 亚洲成人激情在线| 不卡av电影在线观看| 国产91免费看片| 久久亚洲影音av资源网| 日韩视频在线免费观看| 国产偷国产偷亚洲清高网站| 欧美色道久久88综合亚洲精品| 欧美日韩免费在线观看| 欧美成人午夜影院| 久久亚洲精品一区| 亚洲高清av在线| 日韩激情av在线免费观看| 欧美性xxxxxx| 日韩一级裸体免费视频| 日韩不卡在线观看| 久久这里只有精品99| 日韩一区二区在线视频| 欧美最顶级的aⅴ艳星| 国内精品久久久久影院 日本资源| 欧美性猛交xxxx乱大交极品| 国产精品偷伦一区二区| 欧美xxxx14xxxxx性爽| 欧美尤物巨大精品爽| 国产精品网站视频| 成人女保姆的销魂服务| 在线亚洲男人天堂| 欧美性猛交xxxx富婆弯腰| 国产亚洲精品久久久久久777| 国产成人小视频在线观看| 亚洲国产精品中文| 久久久欧美精品| 最新国产精品亚洲| 欧美性猛交xxxx乱大交极品| 亚洲福利视频在线| 一区二区亚洲精品国产| 日韩av123| 视频直播国产精品| 欧美亚洲另类激情另类| 欧美激情精品久久久| 日韩免费不卡av| 国产欧亚日韩视频| 国产精品99久久久久久久久久久久| 综合国产在线观看| 日产精品久久久一区二区福利| 国产精品高潮呻吟久久av无限| 北条麻妃一区二区三区中文字幕| 成人黄色免费网站在线观看| 96pao国产成视频永久免费| 久久精品中文字幕| 久久99国产精品自在自在app| 亚洲午夜精品久久久久久久久久久久| 91亚洲国产成人精品性色| 欧美成人精品影院| 欧美中文在线字幕| 久国内精品在线| 亚洲品质视频自拍网| 国产一区二区三区直播精品电影| 成人免费视频xnxx.com| 亚洲国产中文字幕久久网| 一本大道香蕉久在线播放29| 成人黄色免费片| 亚洲色图第一页| 国产精品视频自拍| 成人欧美在线观看| 亚洲国产精品人久久电影| 日韩免费精品视频| 亚洲999一在线观看www| 国产精品美乳一区二区免费| 亚洲最大福利视频网站| 日韩在线观看免费网站| 亚洲欧洲激情在线| 久久久久久国产三级电影| 久久成人av网站| 国产欧美精品一区二区三区介绍| 精品福利免费观看| 久久久电影免费观看完整版|