- 不要等到明天旅赢,明天太遙遠,今天就行動放椰。
須讀:看完該文章你能做什么缔刹?
重寫init構(gòu)造方法
學習前:你必須會什么?
什么是方法
OC中的方法也分為兩種 : 類方法 和 對象方法
OC中的類方法用 +表示, OC中的對象方法 用-表示
OC的方法 :
沒有返回值沒有參數(shù)的 - (void)text1;
沒有返回值參數(shù)的 - (void)text2WithNumber:(int)number;
有返回值沒有參數(shù)的 - (int)text3WithNumber;
有返回值有參數(shù)的 - (int)text2WithNumber:(int)number andNumber2:(int)number2; // 多個參數(shù)
一、本章筆記
一杀迹、
在OC中init開頭的方法,我們稱之為構(gòu)造方法
構(gòu)造方法的用途:用于初始化一個對象,讓某個對象 已創(chuàng)建出來就擁有某些屬性和值
二、
重寫init方法,在init方法中初始化成員變量
注意 : 重寫init方法 必須 按照蘋果規(guī)定的格式重寫,如果不按照規(guī)定 會引發(fā)一些未知的錯誤
1. 必須先初始化 父類, 在初始化子類
2. 必須先判斷父類 是否 初始化成功, 只有父類 初始化成功 才能繼續(xù) 初始化子類
3. 返回當前對象的地址
二押搪、code
main.m
#pragma mark 08-構(gòu)造方法基本概念
#pragma mark 概念
/*
一树酪、
在OC中init開頭的方法,我們稱之為構(gòu)造方法
構(gòu)造方法的用途:用于初始化一個對象,讓某個對象 已創(chuàng)建出來就擁有某些屬性和值
二、
重寫init方法,在init方法中初始化成員變量
注意 : 重寫init方法 必須 按照蘋果規(guī)定的格式重寫,如果不按照規(guī)定 會引發(fā)一些未知的錯誤
1. 必須先初始化 父類, 在初始化子類
2. 必須先判斷父類 是否 初始化成功, 只有父類 初始化成功 才能繼續(xù) 初始化子類
3. 返回當前對象的地址
*/
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
Person *p = [[Person alloc]init];
NSLog(@"age = %i",p.age);
Person *p2 = [[Person alloc]init];
NSLog(@"age = %i",p2.age);
Person *p3 = [[Person alloc]init];
NSLog(@"age = %i",p3.age);
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@end
>>>.m
#import "Person.h"
@implementation Person
/* 重寫init方法,在init方法中初始化成員變量
注意 : 重寫init方法 必須 按照蘋果規(guī)定的格式重寫,如果不按照規(guī)定 會引發(fā)一些未知的錯誤
1. 必須先初始化 父類, 在初始化子類
2. 必須先判斷父類 是否 初始化成功, 只有父類 初始化成功 才能繼續(xù) 初始化子類
3. 返回當前對象的地址
*/
#pragma mark 初始化 方式1
/*
- (instancetype)init
{
// 1.初始化父類
// 只要父類初始化成功, 就會返回對應(yīng)的地址,如果初始化失敗,就會返回nil
// nil == 0 == 假 == 沒有初始化成功
self = [super init];
// 2.判斷父類 是否初始化成功
if (self !=nil) {
// 3.初始化子類(以后只有初始化子類 不固定 其他都是固定的)
// 設(shè)置屬性的值
_age = 6;
}
// 4.返回地址
return self;
}
*/
#pragma mark 初始化 方式2
/*
- (instancetype)init
{
self = [super init];
if(self)
{
// 初始化子類
_age = 6;
}
return self;
}
*/
#pragma mark 初始化 方式3
- (instancetype)init
{
// 注意 : 不要把 = 號 寫為 ==
// 一定要將 [super init]的返回值 賦值給self
if(self = [super init])
{
// 初始化子類
_age = 6;
}
return self;
}
@end