日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oc 实例变量可见度、方法

發(fā)布時(shí)間:2023/12/19 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oc 实例变量可见度、方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

?、實(shí)例變量可?度

@public ?? ? ? ? ? ? ? ?? 在類的外部和內(nèi)部均可訪問

@protected(默認(rèn)) ? 只能在該類和其?類內(nèi)訪問

@private ?? ? ? ? ? ? ? ? 只能在該類內(nèi)訪問


?、?法(定義、聲明、調(diào)用)

OC中的方法分兩種:類方法、實(shí)例方法

?同一個(gè)類中,所有的方法中不能出現(xiàn)重名
?

方法的聲明

- (返回值類型)方法名:(參數(shù)類型1)參數(shù)名1 修飾詞:(參數(shù)類型2)參數(shù)名2

- (paraType)methodName:(paraType)paraName1 descripName:(paraType)paraName2


方法的調(diào)用

??類方法 + 只能類調(diào)用 [class_name class_method_name];

類方法中,不能使用實(shí)例變量(調(diào)用類方法時(shí),沒有創(chuàng)建對象)

+ (void)sayHi;

??實(shí)例方法 - 只能對象調(diào)用 [object_name instance_method];

- (void)sayHello;



三、setter、getter

setter:設(shè)置實(shí)例變量的值

- (void)setName:(type)name;

getter:獲取實(shí)例變量的值

- (type)name;




OC2.0.setter

如果通過setter方法為對象設(shè)置初始值,需通過以下方式:

- (void) setOrigin: (XYPoint *) pt

{

? ? ?if (origin)

? ? ? ? ? [origin release];


? ? ?origin = [[XYPoint alloc] init];


? ? ?[origin setX: pt.x andY: pt.y];

}

原因:若不alloc,創(chuàng)建多個(gè)對象后,指針指向同一內(nèi)存區(qū)域,修改某一個(gè)對象的origin將會改變所有對象的origin值。





四、自定義初始化方法

使用自定義初始化方法創(chuàng)建對象

創(chuàng)建對象后,不能再調(diào)用初始化方法

- (id)initWithName1:(type)name1 name2:(type)name2 …;


五、類的調(diào)用

#import "ClassName.h"

循環(huán)調(diào)用的產(chǎn)生:

A.h: ? ?#import "B.h"

B.h: ? ?#import "A.h"

編譯器執(zhí)行時(shí),在#import 處出現(xiàn)死循環(huán),永遠(yuǎn)執(zhí)行不到@interface ,因此所導(dǎo)入的類不可被識別

防止循環(huán)調(diào)用

在 .h 文件中使用 @class ?ClassName; ? 告知編譯器class后面的標(biāo)識符是一個(gè)類

在 .m 文件中 使用 #import 導(dǎo)入所需類所在文件


簡答題:

?

1、實(shí)例變量的可見度有哪幾種?默認(rèn)的是什么?(中英文都要記)

@public @protected @private

2、如何對一個(gè)類的默認(rèn)可見度的實(shí)例變量進(jìn)行賦值和取值?

getter&setter method

3、面向?qū)ο缶幊痰娜筇卣?#xff1f;

封裝(保證了屬性與方法的關(guān)聯(lián)性)

繼承(代碼復(fù)用)

多態(tài)(在代碼復(fù)用的同時(shí),強(qiáng)化了個(gè)性差異)

4、什么是封裝?

封裝:對外提供聲明,對內(nèi)隱藏內(nèi)部實(shí)現(xiàn)

5、#import有什么作用?#import和#include有什么不同?

#include 和 #import的區(qū)別

(1)include不能重復(fù)導(dǎo)入同一個(gè)文件

(2)import可以重復(fù)導(dǎo)入同一個(gè)文件

(3)現(xiàn)在include和import都可以重復(fù)導(dǎo)入

6、對象的內(nèi)存分配在哪個(gè)區(qū)?

堆區(qū)

7、堆區(qū)和棧區(qū)的區(qū)別(從內(nèi)存的分配和回收考慮)

棧區(qū)由系統(tǒng)負(fù)責(zé)分配和回收

堆區(qū)由開發(fā)者負(fù)責(zé)分配和回收

8、OC中的方法有幾類?OC中有私有方法嗎?

兩類:類方法、實(shí)例方法

9、如何確定兩個(gè)方法是否同名?

?

10、-(id)setName:(NSString *)name ?:(NSString *)sex ?age:(int)age的方法名是什么?

setName: : age:

11、定義并實(shí)現(xiàn)一個(gè)實(shí)例變量的setter和getter方法。

12、#import ” ”和#import < >有什么區(qū)別?

“” 導(dǎo)入用戶文件

<> 導(dǎo)入系統(tǒng)文件

13、@class有什么作用?#import和@class有什么區(qū)別?

@class告知編譯器系統(tǒng)class后面的標(biāo)識符是一個(gè)類,并沒有導(dǎo)入這個(gè)類的內(nèi)容

#import導(dǎo)入文件的內(nèi)容

轉(zhuǎn)載于:https://my.oschina.net/zooyf/blog/487242

總結(jié)

以上是生活随笔為你收集整理的oc 实例变量可见度、方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。