嘗試百度面試題解答Part1

引子

百度知道團隊的孫源是我一直佩服的真大神之一.我特別尊敬這種實實在在研究底層的精神,他的每一篇博客都堪稱干貨,其鉆研精神值大家學習.

恰巧看到了在他們團隊招聘告一段落后,他總了的一片關(guān)于面試的博客 .我雖技術(shù)積累遠遠不夠,但想斗膽嘗試答題一下.

本文暫且忽略該博客的第一條所強調(diào)的:單詞大小寫拼寫與注釋.只為答題

1.修改風格

//XX表示前綴
NS_ENUM(NSInteger, XXUserGender){
    XXUserGenderMale,
    XXUserGenderFemale
};

@interface XXUserEntity : NSObject

@property (nonatomic, copy)   NSString        *name;
@property (nonatomic, assign) NSUInteger      age;
@property (nonatomic, assign) enum UserGender gender;

- (instancetype)initWithUserName:(NSString *)name userAge:(NSUInteger)age;

- (void)doLoginWithSuccess:(void (^) (id response))suc failure:(void (^) (NSError *error))fail;

2.@property 后面可以有哪些修飾符?

  • readonly,readwrite表示讀寫全線
  • retain,copy,assign,strong,weak表示引用方式,涉及屬性自動創(chuàng)建的setter的實現(xiàn)
  • nonatomic,atomic意為原子特性,表示是否線程安全.
  • getter,setter表示自定義的獲取/設(shè)置方法.

3.什么情況使用 weak 關(guān)鍵字笋妥,相比 assign 有什么不同?

在IBOutlet,block等的引用中使用weak關(guān)鍵字
相比assign最大的不同是weak在會收回后會把指針置為空,而assgin不會.

4.怎么用 copy 關(guān)鍵字?

  • copy拷貝的是內(nèi)容,retain是拷貝的指針.
  • 以string為例,如果string的屬性為copy的話,那么傳入?yún)?shù)為NSString的話,即為不可變string,retain,copy效果一樣.
  • 如果傳入?yún)?shù)是mutable的話,那么copy拷貝內(nèi)容,源隨意變化不影響該屬性的值.retain拷貝指針,源變化則屬性值著變化,因為屬性和源指向同一內(nèi)存地址.
  • 如何使用呢,通常在需要拷貝內(nèi)容,但是副本和源不要互相影響的情況下使用.
  • 例如array/dictionary中,可能會需要一個副本來做一些操作(篩選,排序等),但是并不希望影響原始值,則可以使用copy

5.這個寫法會出什么問題: @property (copy) NSMutableArray *array;

即使在MRC時代,我們通常會寫成retain,在ARC時代,我們會寫成strong,所以copy會略顯奇怪

嘗試分析一下,copy為內(nèi)容拷貝,和源對象變成2個擁有相同內(nèi)容的不同指針,互不影響.

并且因為調(diào)用copy方法,所以該array屬性在RunTime的時候,實際上為NSArray,即無法調(diào)用add等方法,但是編譯期調(diào)用是合法的,所以可能會造成crash.

demo調(diào)試一下,果然報錯:

-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x7ff240614b40

調(diào)試代碼為:

A Controller:

    NSMutableArray *array = [@[] mutableCopy];
    TestController *controller = [[TestController alloc] init];
    controller.array = array;
    [self.navigationController pushViewController:controller animated:YES];

B的property:

    @property (copy) NSMutableArray *array;

B Controller:

  - (void)viewDidLoad{
      [super viewDidLoad];
      self.view.backgroundColor = [UIColor lightGrayColor];
      [self performSelector:@selector(a) withObject:nil afterDelay:1];
  }

  - (void)a{
      [self.array addObject:@"a"];
      NSLog(@"%@",self.array);
  }

6.如何讓自己的類用 copy 修飾符豪墅?如何重寫帶 copy 關(guān)鍵字的 setter?

  • NSCopying協(xié)議
  • copy的過程是釋放老對象,新對象copy源對象(內(nèi)容復制),當然可以先判斷源對象和老對象是否為同一對象增加效率.

7.@property 的本質(zhì)是什么?ivar抵栈、getter、setter 是如何生成并添加到這個類中的

@property本質(zhì)是定義一個objc_property結(jié)構(gòu)體
ivar坤次、getter古劲、setter的生成過程..我需要查查資料

8.@protocol 和 category 中如何使用 @property

@protocol可以通過關(guān)鍵字:@synthesize或者在繼承的類里面重新定義一次該屬性(extension里面定義是不行的)
category通過關(guān)聯(lián):objc_setAssociatedObject/objc_getAssociatedObject

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缰猴,隨后出現(xiàn)的幾起案子产艾,更是在濱河造成了極大的恐慌,老刑警劉巖滑绒,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷堡,死亡現(xiàn)場離奇詭異,居然都是意外死亡疑故,警方通過查閱死者的電腦和手機杠览,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵势,“玉大人踱阿,你說我怎么就攤上這事∏仗” “怎么了软舌?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牛曹。 經(jīng)常有香客問我佛点,道長,這世上最難降的妖魔是什么黎比? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任超营,我火速辦了婚禮,結(jié)果婚禮上阅虫,老公的妹妹穿的比我還像新娘糟描。我一直安慰自己,他們只是感情好书妻,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般躲履。 火紅的嫁衣襯著肌膚如雪见间。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼浆熔。 笑死颂碘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的葵孤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惊橱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箭昵,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤税朴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后家制,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體正林,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年颤殴,在試婚紗的時候發(fā)現(xiàn)自己被綠了觅廓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涵但,死狀恐怖杈绸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贤笆,我是刑警寧澤蝇棉,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站芥永,受9級特大地震影響篡殷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埋涧,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一板辽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棘催,春花似錦劲弦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春画畅,著一層夾襖步出監(jiān)牢的瞬間砸琅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工轴踱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留症脂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓淫僻,卻偏偏與公主長得像诱篷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雳灵,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 昨天剛過完寶寶2歲生日细办,轉(zhuǎn)眼間我在爸爸這個角色上也干了兩年橙凳。 吳伯凡老師說過: 世界上的事兒分三類,第一類是不復雜...
    托爸閱讀 473評論 0 1
  • 心動昨夜雨笑撞, 寸檐伴聽簫岛啸。 誰解此間意, 踏風上瓊宵茴肥。
    劉漢皇閱讀 286評論 0 2
  • 一輩子真的很短坚踩,活到一百歲,也就三萬六千五百天瓤狐,減去工作吃飯睡覺的時間瞬铸,我所能用來愛你的時間好有限,所以我決定把下...
    知心勿語閱讀 138評論 0 1
  • 天涯海角去尋你 那么遙遠 那么想 給我希望 給我光 千山萬水我不怕 萬水千山思念長 愛的聲音輕呼喚 魔棒一樣助飛翔...
    靜若青蓮閱讀 414評論 9 29