oc 实例变量可见度、方法
為什么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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 xilinx vivado 的PC
- 下一篇: Tokyo Tyrant安装和配置