這里會(huì)記錄一些沒(méi)用的iOS技術(shù)锦针,但或許會(huì)是有趣的。
1.關(guān)于向前聲明
為避免循環(huán)引用蚤霞,C 語(yǔ)言有一個(gè)前向聲明的機(jī)制,即僅僅告訴存在性义钉,而不理會(huì)具體實(shí)現(xiàn)昧绣。C++ 使用 class 關(guān)鍵字實(shí)現(xiàn)前向聲明。在 Objective-C 中則是使用@class關(guān)鍵字
用clang -rewrite-objc 查看后發(fā)現(xiàn) OC語(yǔ)法解析后的C++代碼并非使用class來(lái)前置聲明一個(gè)類捶闸,而是 typedef struct objc_object Son;這種方式來(lái)聲明Son類滞乙。所以我們完全可以用typedef struct objc_object MyClass;來(lái)代替@class.可是并不會(huì)有人這樣做。
2.關(guān)于Objective-C 訪問(wèn)權(quán)限的一些事
在 Objective-C 中鉴嗤,只有成員數(shù)據(jù)可以是private斩启,protected和public的,默認(rèn)是protected醉锅。方法只能是public的兔簇。實(shí)際上在頭文件聲明一個(gè)方法和.m中是一樣的,.m中使用分類機(jī)制(class categories)聲明方法硬耍,雖然暫時(shí)隱藏方法垄琐,但是得益于 Objective-C 的動(dòng)態(tài)性,我們可以用performSelector:
Foo *foo = [Foo new];
[foo performSelector:NSSelectorFromString(@"apple")];
////////////////////////////////////////////////////////////////////////////////////////
@implementation Foo
-(int) apple{
return 10;
}