0c 36 自動釋放池應用場景

2021-09-07 06:15:50 字數 1658 閱讀 8962

1

、autorelease的應用場景

經常用來在類方法中快速建立1個物件。

//宣告實現乙個類方法

+ (student *)student

應用://

在自動釋放池中使用類方法建立物件

@autoreleasepool

錯誤寫法:

intmain()

//寫在自動釋放池外部將無法釋放物件。

student *s =[student student];

reutrn 0;

}2、完善快速建立物件的方法

問題1:如果定1個goodstudent,繼承自student,此時,還能使用類方法快速建立物件嗎?

解決方案:

在類方法中使用id

+ (id

)student

此時,返回的物件仍舊是student.所以,應該用self,替代student.

問題2:用其他物件型別,接受自定義物件型別。

如: nsstring *s =[student student];

nslog(

@"%lu

",s.length);

這段**,編譯時,不會報任何警告,但是執行時會直接崩潰。

改進辦法:

//instancetype:可以動態判斷返回的型別和接受的型別是否一致

+(instancetype)student

此時,編譯器會警告

nsstring *s =[student student];

nslog(

@"%lu

",s.length);

【理解】應用:建立1個學生類初始化年齡

思考&實現1:

建立乙個學生類student,通過重寫構造方法實現建立學生物件的時候,預設的年齡值指定的年齡。

//宣告檔案

#import

@inte***ce

student : nsobject

//年齡屬性

@property(nonatomic,assign) int

age;

//自定義構造方法

-(instancetype)initwithage:(int

)age;

//自定義類方法

+(instancetype)studentwithage:(int

)age;

@end

//實現檔案

#import

"student.h

"@implementation

student

- (void

)dealloc

//自定義構造方法

-(instancetype)initwithage:(int

)age

return

self;}//

自定義初始化方法

+(instancetype)studentwithage:(int

)age

@end

//主函式

#import

#import

"student.h

"int main(int argc, const

char *argv)

return

0; }

C語言 0 和0和 0

共同點 都是字元 不同點 0 對應的ascii碼是0,是ascii碼表中的第乙個字元,即空字元 判斷乙個字串是否結束的標誌就是看是否遇到 0 0 對應的ascii碼是48,48對應的十六進製制數就是0x30。0 是字串常量,字串常量是由一對雙引號括起的字串行。字串常量可以含乙個或多個字元。0 是字元...

C 筆記 3 6 多維陣列

嚴格來說,c 語言中沒有多維陣列,通常所說的多維陣列其實是陣列的陣列。二維陣列作為函式引數,不能省略二維大小二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大 明,如 void func int a 3 4 void func ...

PHP PSR 0 自動載入規範

此規範已被棄用 本規範已於2014年10月21日被標記為棄用,目前最新的替代規範為 psr 4 本文是為自動載入器 autoloader 實現通用自動載入,所需要遵循的編碼規範。以上是使用通用自動載入必須遵循的最低規範標準,可通過以下的示例函式 splclassloader 載入 php 5.3 的...