編寫高質(zhì)量代碼讀后感

第一章

1.運(yùn)行時(shí)語言:在編譯的時(shí)候不能直接編譯成機(jī)器可讀的語言,而是在運(yùn)行時(shí)(runtime)把程序編譯成機(jī)器可讀的語言。OC就是一門動態(tài)語言、c++為靜態(tài)語言

2.盡量減少頭文件的引用,這樣可以提高編譯速度

3.盡量少使用#define

正確
static NSString *const Name = @"CF";
static const CGFloat Height = 1.80;
錯(cuò)誤
#define Name @"CF"
#define Height = 1.80

5.返回值不確定時(shí)使用instancetype 而不是用id

第五章

33.在一個(gè)類中也可以創(chuàng)建不同的類,這樣可以免去創(chuàng)建類似的類,而是用一個(gè)類,在類的里面再去常見其他的類即可。
***.h文件 ***

#import <Foundation/Foundation.h>

@interface Catagory : NSObject

@property (nonatomic,copy) NSString *ss;
-(void)eat;

@end



@interface CatagoryOne : NSObject

@property (nonatomic,copy) NSString *oneName;
-(void)eat;

@end



@interface CatagoryTwo : NSObject

@property (nonatomic,copy) NSString *twoName;
-(void)eat;

@end

.m文件

#import "Catagory.h"

@implementation Catagory

-(void)eat{
    NSLog(@"Catagory eat");
}

@end


@implementation CatagoryOne

-(void)eat{
    NSLog(@"CatagoryOne eat");
}

@end


@implementation CatagoryTwo

-(void)eat{
    NSLog(@"CatagoryTwo eat");
}

@end

只需要引用一個(gè)#import "Catagory.h"里面的CatagoryOne 和 CatagoryTwo 就都可以使用了
注意這樣的優(yōu)點(diǎn)是把有同樣邏輯和功能的類放在一起,不需要再去單獨(dú)的拆分,如果兩個(gè)類的邏輯并不一樣,那么久不要放在一起。

34.在我們獲取一個(gè)對象的時(shí)候,可以先進(jìn)行一些判斷,例如這個(gè)對象確認(rèn)是某個(gè)類,或者是否是有值的,之后再去進(jìn)行一些操作,這樣可以提高代碼的健壯性,不會以為拿到的類,類型不對崩潰,會因?yàn)橐詾橛兄?,?shí)際是沒有值的崩潰問題。

36.一個(gè)對象調(diào)用new方法的時(shí)候,做了兩步操作,第一步:創(chuàng)建對象的內(nèi)存,第二步:調(diào)用對象的init方法

38.block代碼塊里面使用self會出現(xiàn)循環(huán)引用無法釋放的問題, 應(yīng)該在block之前改成弱引用

_weak ClassName *weakself = self;

39.OC中所有對象之間的交互都是通過指針來改變的。

40.當(dāng)一個(gè)對象至nil時(shí),如果沒有其他對象強(qiáng)引用就會被釋放。

第六章

41.在OC中每個(gè)對象都隱藏著一個(gè)數(shù)據(jù)結(jié)構(gòu)指針isa指針。在OC中每個(gè)對象都保留一個(gè)超類指針,通過該指針可以調(diào)度自己已有的方法和調(diào)度基類。

注:沒有寫的建議,個(gè)人認(rèn)為是老的,或者是大家都知道,所有沒有提及,只寫了個(gè)人認(rèn)為要注意的。
小伙伴們?nèi)绻J(rèn)為還有其他要注意的,請留言,我會添加上去。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章 熟悉Objective-C 1. 了解Objective-C語言的起源Objective-C(以下簡稱OC...
    還是不夠辣閱讀 966評論 0 5
  • 2、#import和#include的區(qū)別是什么?#import<> 跟 #import""有什么區(qū)別? .#im...
    AlanGe閱讀 382評論 0 0
  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔?,即兩個(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,527評論 1 27
  • 307、setValue:forKey和setObject:forKey的區(qū)別是什么? 答:1, setObjec...
    AlanGe閱讀 1,708評論 0 1
  • 暑假支教的時(shí)候,男老師比較少,自己被校長安排當(dāng)八年級的班主任。 上了兩節(jié)課,就發(fā)現(xiàn)了一個(gè)不好的現(xiàn)象,大家總是把垃圾...
    星魁的實(shí)驗(yàn)室閱讀 239評論 0 1

友情鏈接更多精彩內(nèi)容