- Objective-C和Sprite Kit游戲開發從入門到精通
- 曹化宇
- 694字
- 2021-01-07 18:57:43
4.5 初始化方法
我們先回憶一下創建五號機器人對象的方法。
CRobot *robot5 = [[CRobot alloc] init];
代碼中,初始化對象robot5時調用了兩個方法,即alloc和init。其中,alloc方法用于創建一個基本的CRobot對象,接下來的init方法就是對象的初始化方法。
在Objective-C中約定,在類中以init開頭的方法都會假設為對象的初始化方法,所以,在對自定義的方法命名時,應該注意這一點。
除了init方法,我們還可以創建更多的初始化方法,如下面的代碼,我們就在CRobot類的接口部分聲明了一個初始化方法。
@interface CRobot: NSObject -(instancetype) initName:(NSString*)n andSpeed:(float)s; @end
然后,我們在類的實現部分定義這個初始化方法,如下面的代碼。
@implementation CRobot -(instancetype) initName:(NSString*)n andSpeed:(float)s { self = [super init]; if (self) { self.name = n; self.speed = s; } return self; } @end
我們先看一下代碼中新出現的三個關鍵字:
? instancetype,指定初始化方法的返回值為instancetype類型,表示此方法會返回當前類類型的對象(實例)。
? super,表示父類(基類、超類)對象。
? self,表示當前對象。
這三個關鍵字的作用,我們會在4.6節中詳細介紹。
現在,我們回到初始化方法中,下面的代碼演示了這個自定義初始化方法的使用。
CRobot *robot5 = [[CRobot alloc] initName:@"NO.5" andSpeed:50.0]; NSLog(@"%@ 的速度是 %f km/h", robot5.name, robot5.speed);
我們看到,使用初始化方法,可以簡化很多的對象初始代碼,而且通過多個初始化方法,可以快速創建多種形式的對象,在很大程度上提高開發效率。
創建和使用初始化方法時,有一些問題需要我們注意:
? 初始化方法的返回值類型應該定義為instancetype,而在早期的Objective-C代碼中,初始化方法返回值通常定義為id類型。
? 初始化方法都應該以init開頭。
? 初始化方法的參數定義與普通方法的參數定義相同。
? 在初始化方法中,一般情況下,都應該先使用super關鍵字調用基類的初始化方法,以保證初始化工作的完整性。
? 為了簡化代碼,我們也可以在初始化方法中調用本類中其他的初始化方法,此時,應使用self(當前實例)調用,如[self init]。
- Excel 2016辦公應用從入門到精通
- Word/Excel/PPT 2016 商務應用傻瓜書
- PPT制作應用大全2019
- Excel 2013從新手到高手(超值版)
- 中文版AutoCAD 2016園林設計從入門到精通
- Learning AWS IoT
- Word/Excel/PowerPoint 2013三合一辦公應用
- 從零開始學Excel VBA
- 一看即會:電腦組裝·系統安裝·日常維護與故障排除(超值視頻教學版)
- 新編Office 2007公司辦公入門與提高(修訂版)
- Project 2013從新手到高手
- PPT 2016幻燈片設計與制作從新手到高手
- Excel VBA實戰應用一本通
- 文字力!優雅Word的排版與設計實用法則
- Excel/PPT 2016辦公應用從入門到精通