国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - Objective-C中類和方法的定義以及協議的使用

Objective-C中類和方法的定義以及協議的使用

2021-01-06 14:44芳草小腳丫 IOS

這篇文章主要介紹了Objective-C中類和方法的定義以及協議的使用,配合Mac下的Xcode IDE進行講解,需要的朋友可以參考下

類和方法的定義
一般類都是繼承nsobject,新建一個類時父類選擇nsobject即可,oc只有單繼承,沒有多繼承。

下面以一個簡單的oc工程來講解(需配置好xcode工具以相應的sdk),會建工程的請直接跳到‘六'步驟。

一、新建一個oc編譯環境,打開xcode->file->new->project(快捷鍵 command+shift+n)。

二、選擇os x--application--command line tool,選擇next

Objective-C中類和方法的定義以及協議的使用

三、填寫項目名稱(最好英文),你自己的名字,和公司的標志。type選擇foundation,下面的勾表示是否選擇arc,建議初學者勾上。點擊next

Objective-C中類和方法的定義以及協議的使用

四、此時工程建好了,會看到一個main.m文件,所有的調用都在main.m中完成。

新建一個類,command+n,選擇父類nsobject,取名people

Objective-C中類和方法的定義以及協議的使用

五、點擊next之后,出現以下界面,切記下面的√要打上。否則在編譯時工程搜索不到此文件,會出現編譯錯誤。

Objective-C中類和方法的定義以及協議的使用

六、在people.h文件interface中添加變量,nsstring為oc的字符串變量。

復制代碼 代碼如下:

@interface person : nsobject {
    
    nsstring * _name;
    int _age;
    
}


然后在{}外面定義變量的初始化方法和set方法,格式:-(類型)方法名:(參數類型)參數1 參數名:(參數類型)參數2……,set方法名一般為set變量名,變量名首字母大寫,此未蘋果官方文檔上的說明

復制代碼 代碼如下:

-(void)setage:(int)age;
 
-(void)setname:(nsstring *)name;


定義變量的get方法,get方法名同樣為get變量名

復制代碼 代碼如下:

-(int)age;
 
-(nsstring *)name;


七、在people.m文件中實現people.h文件中聲明的方法。

復制代碼 代碼如下:


-(void)setage:(int)age {
 
    _age = age;
 
}
 
-(void)setname:(nsstring *)name {
    _name = [name copy];//copy方法涉及到oc的內存管理機制。使用copy可防止內存泄露
}

 

-(int)age {
    return _age;
}
-(nsstring *)name {
    return _name;
}


七、在main.m中定義一個people類,并對其屬性變量進行初始化。
定義一個people類:

復制代碼 代碼如下:

person *dwight = [[person alloc] init];


給其屬性賦值:

復制代碼 代碼如下:

[dwight setname:@"dwight schrute"];
 
[dwight setage:38];


打印值:

 

nslog(@"%@ (%d)", [dwight name], [dwight age]);
ps:一般nsstring,nsarray,nsdictionary,nsdata等類型的值打印用%@,int等c中的類型,按照c語言打印的關鍵字打印,nsinteger,nsnumber打印時用%d。

打印結果:

Objective-C中類和方法的定義以及協議的使用

 


protocol協議,設置代理
協議(protocol)是objc中很重要的一部分,它用來定義可由任何其他類完成的方法,當本類中需要完成某些功能時,可由protocol來實現
protocol在三種情況中需要用到:

需要聲明別的類期望完成的方法時
在隱藏自身類的情況下聲明該類對象的接口時
在某些沒有繼承關系的類之間獲取其之間的相似性,即兩個類之間沒有繼承關系,但是都需要實現同樣的方法時,就可通過代理來實現。
protocol文件中只是定義一些方法,當你在類中實現了這個protocol時,你就需要補充這些方法,系統會自動調用這些方法
protocol中方法分為@required和@optional,其中在@required下的方法必須實現,@optional中方法是選擇性實現,也可不實現。

下面以一個簡單實例說明protocol的用法(os x下)在ios下同樣使用

一、新建一個objective-c class,命名為ioscoder

①、在ioscoder@end后面定義一個protocol,命名為myprotocoldelegate,并聲明@required和@optional方法

②、在#import后聲明@protocol myprotocoldelegate

③、在interface中聲明屬性@property(nonatomic,assign) id<myprotocoldelegate>   delegate;


整個.h文件如下

復制代碼 代碼如下:

#import <cocoa/cocoa.h>
 
@protocol myprotocoldelegate;
 
@interface ioscoder : nsobject
//聲明delegate屬性
@property(nonatomic,assign) id<myprotocoldelegate>   delegate;
 
@end

 

復制代碼 代碼如下:

//定義protocol
@protocol myprotocoldelegate <nsobject>
//必須實現方法
@required
-(void)startobjectivec;
-(void)startprograming;
//選擇實現方法
@optional
-(void)startjavascript;
-(void)startpython;
 
@end


二、在需要用到ioscoder類的文件中,聲明并進行初始化
如果要用到ioscoder中的delegate,則必須在.h文件中進行聲明,聲明格式

 

@interface 類名:繼承類<myprotocoldelegate>

定義ioscoder對象

復制代碼 代碼如下:

ioscoder *ios = [[ioscoder alloc] init];
    ios.delegate = self;
    if ([ios respondstoselector:@selector(startobjectivec)]) {
        [self startobjectivec];
    }
    if ([ios respondstoselector:@selector(startprograming)]) {
        [self startprograming];
    }


實現required方法

復制代碼 代碼如下:

-(void) startobjectivec
{
    nslog(@"@required,startobjectivec");
}
-(void)startprograming
{
    nslog(@"@required,startprograming");
    
}


附:在ios viewcontroller中使用時

 

假設a要跳轉到b頁面時需要在b頁面中實現a中的protocol方法

.h文件

復制代碼 代碼如下:

#import <uikit/uikit.h>
@class aviewcontroller;
@protocol adelegate <nsobject>
 
- (void) amethod
 
@end

 

復制代碼 代碼如下:

@interface aviewcontroller : uiviewcontroller
{
     id<adelegate> _delegate;
    
}
@property(nonatomic,assign)id<adelegate> delegate;
@end


在頁面跳轉之前加上

復制代碼 代碼如下:

if (_delegate && [_delegate respondstoselector:@selector(amethod)]) {
          [_delegate amethod];
     }


在b頁面中聲明代理<adelegate>,實現amethod方法,實例化a對象,并設置代理
則在b界面會調用amethod方法,即完成了protocol的實現

延伸 · 閱讀

精彩推薦
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
主站蜘蛛池模板: 俺去俺来也在线www色官网 | 欧美日韩亚洲国产精品 | 亚洲精品九九 | 一区二区三区精品 | 精品视频网站 | 日韩欧美一区在线 | 日韩午夜激情视频 | 国产精品美女久久久久久免费 | 一本久久久 | 色a视频 | 国产高清视频一区 | 精品视频一区二区三区四区 | 亚洲va国产天堂va久久 en | 美日韩成人 | 中文字幕在线观看一区二区三区 | www.欧美日韩| 日韩一二三| 国产午夜精品久久久久久久 | 黄p在线看 | 成人av在线网| 在线成人| 亚洲精品视频在线免费 | 国产在线在线 | 亚洲成人av一区二区三区 | 成人午夜精品 | 日韩免费一级 | 成人国产精品一级毛片视频 | 精品在线视频一区 | 日韩精品一区二区三区中文字幕 | 激情五月婷婷 | 成人激情视频 | 欧美电影在线观看网站 | 夜夜操天天干, | 超碰中文字幕 | 国产精品午夜在线观看 | 亚洲欧美一区二区视频 | 亚洲男女在线 | 性色国产 | 五月婷婷视频 | 亚洲精品区 | 成人精品在线观看 |