欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

長(zhǎng)沙戴維營(yíng)教育iOS開(kāi)發(fā)面試題周刊-創(chuàng)新互聯(lián)

[TOC]

創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十年品質(zhì),值得信賴!
1. 介紹一下assign, copy與retain的區(qū)別。
  • assign 簡(jiǎn)單的指針賦值,不涉及引用計(jì)數(shù)的操作。

  • copy 產(chǎn)生一個(gè)新對(duì)象,引用計(jì)數(shù)為1,老對(duì)象引用計(jì)數(shù)不變。

  • retain 對(duì)象的引用計(jì)數(shù)加1。

  • weak 自動(dòng)引用計(jì)數(shù)環(huán)境下使用,與assign類似,但是當(dāng)對(duì)象釋放后會(huì)自動(dòng)置為nil。

  • strong 自動(dòng)引用計(jì)數(shù)環(huán)境下使用,類似于retain,強(qiáng)引用的對(duì)象不會(huì)被釋放。

2. center、frame與bounds的關(guān)系是什么?

center和frame是指視圖在父視圖的坐標(biāo)系統(tǒng)中的表示,center表示UIView的中心點(diǎn)在父視圖坐標(biāo)系統(tǒng)中的位置,frame表示UIView在父視圖坐標(biāo)系統(tǒng)中的位置和大小。bounds表示視圖在它本身的坐標(biāo)系統(tǒng)中的位置。如果修改bounds的origin會(huì)導(dǎo)致該視圖的子視圖位置發(fā)生改變,但不會(huì)影響視圖本身的位置。一般來(lái)說(shuō),frame是由center和bounds計(jì)算得來(lái)。或者是說(shuō)UIView的frame由它所擁有的CALayer的position、anchorPoint和bounds決定。 長(zhǎng)沙戴維營(yíng)教育iOS開(kāi)發(fā)面試題周刊

3. 執(zhí)行下面的代碼會(huì)發(fā)生什么現(xiàn)象?
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];

給對(duì)象發(fā)送一次autorelease消息就會(huì)將它在自動(dòng)釋放池中注冊(cè)一次。當(dāng)自動(dòng)釋放池release或者drain的時(shí)候,將給注冊(cè)到里面的對(duì)象按注冊(cè)的次數(shù)發(fā)送release消息。因此最后ball對(duì)象會(huì)接收到兩次release消息,由于ball的引用計(jì)數(shù)為1,當(dāng)接收第一次release后就被釋放了。第二次release的時(shí)候會(huì)導(dǎo)致程序崩潰。

4. 什么是KVC,如何使用?

KVC是由NSKeyValueCoding非正式協(xié)議所實(shí)現(xiàn)的一種機(jī)制,使得應(yīng)用程序可以通過(guò)名字或Key來(lái)訪問(wèn)對(duì)象的屬性,而不是直接調(diào)用訪問(wèn)器或者實(shí)例變量。 示例代碼:

//  Copyright (c) 2014年 戴維營(yíng)教育. All rights reserved.
//

#import

@class DVIDog;

@interface DVIStudent : NSObject
{
@public
   NSString *_name;
@protected
   NSString *_studentID;
@private
   float _height;
}
//_age
@property (nonatomic, assign) int age;
@property (nonatomic, strong) DVIDog *dog;
@property (nonatomic, strong) NSMutableArray *dogsArray;

- (void)printInfo;

- (void)setValueFromDict:(NSDictionary *)dict;
@end

類的實(shí)現(xiàn):

//
//  DVIStudent.m
//  KVCSample
//
//  Copyright (c) 2014年 戴維營(yíng)教育. All rights reserved.
//

#import "DVIStudent.h"

#import "DVIDog.h"

@implementation DVIStudent

- (id)init
{
   if (self = [super init]) {
       _dogsArray = [NSMutableArray array];
   }

   return self;
}

@synthesize age = _age;

- (void)printInfo
{
   NSLog(@"%@:%@:%d:%f", _name, _studentID, _age, _height);
}

- (void)setValueFromDict:(NSDictionary *)dict
{
   _name = [dict objectForKey:@"name"];
   _age = [[dict objectForKey:@"age"] intValue];
   _height = [[dict objectForKey:@"height"] floatValue];
   _studentID = [dict objectForKey:@"studentID"];
}

- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
   NSLog(@"%@:%@", key, value);
}

- (void)setNilValueForKey:(NSString *)key
{
   NSLog(@"%@", key);
}

- (void)setAge:(int)age
{
   NSLog(@"age: %d", age);
   _age = age;

   _height += 0.1;
}

- (int)age
{
   return _age;
}
@end

第二個(gè)類:

//  Copyright (c) 2014年 戴維營(yíng)教育. All rights reserved.
//

#import

@interface DVIDog : NSObject

@property (nonatomic, assign) int weight;

@end

第二個(gè)類的實(shí)現(xiàn):

//  Copyright (c) 2014年 戴維營(yíng)教育. All rights reserved.
//

#import "DVIDog.h"

@implementation DVIDog

@end

使用KVC訪問(wèn)屬性:

_student = [[DVIStudent alloc] init];
//    student.age = 20;
[_student setValue:@20 forKey:@"age"];

_student->_name = @"Zhangsan";
//1. _key
//2. key
[_student setValue:@"1001" forKey:@"studentID"];
[_student setValue:@1.7 forKey:@"height"];

[_student printInfo];

NSLog(@"%@", [_student valueForKey:@"age"]);

NSDictionary *dict = @{@"name":@"Lisi",@"studentID":@"2002",@"age":@33,@"height":@1.8};
[_student setValueFromDict:dict];
[_student printInfo];

dict = @{@"name":@"Wangwu",@"studentID":@"3002",@"age":@23,@"height":@0.8};
[_student setValuesForKeysWithDictionary:dict];
[_student printInfo];

DVIDog *dog = [[DVIDog alloc] init];
_student.dog = dog;

_student.dog.weight = 20;
[_student setValue:@30 forKeyPath:@"dog.weight"];
NSLog(@"%@", [_student valueForKeyPath:@"dog.weight"]);

[_student setValue:@12 forKey:@"weight"];
[_student setNilValueForKey:@"age"];

NSLog(@"%@", [_student valueForKey:@"age"]);

KVC中除了訪問(wèn)單個(gè)屬性外,還能夠?qū)蠈傩赃M(jìn)行訪問(wèn)和操作:

for (int i = 0; i <</span> 100; )

     ;

//
(@"%@"  @"dogsArray.@count"

常用的集合操作:

bash @avg, @max, @min, @count, @sum等

在KVC的基礎(chǔ)上,蘋(píng)果提供了KVO來(lái)獲取屬性改變的事件: 添加KVO觀察者:

[_student addObserver:self forKeyPath:@"name" options: NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld |NSKeyValueObservingOptionPrior context:nil];

觀察者獲取通知:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
   NSLog(@"%@: %@: %@", keyPath, object, change);
   _nameLabel.text = [change objectForKey: NSKeyValueChangeNewKey];

}
5. 舉例說(shuō)明幾個(gè)常用的Xcode環(huán)境變量。
  • $(BUILT_PRODUCTS_DIR) 構(gòu)建成功后,目標(biāo)文件存放的位置。

  • $(TARGET_NAME) 目標(biāo)工程名。

  • $(SRCROOT) 工程文件存放的位置。

  • $(CURRENT_PROJECT_VERSION) 當(dāng)前工程版本號(hào)。

6. 需要對(duì)一個(gè)代理對(duì)象進(jìn)行強(qiáng)引用(retain)嗎?

不應(yīng)該對(duì)一個(gè)對(duì)象進(jìn)行強(qiáng)引用。代理對(duì)象可能對(duì)被代理對(duì)象擁有強(qiáng)引用,如UITableViewController對(duì)它里面的tableView的引用。如果tableView的代理也是強(qiáng)引用的話,就會(huì)導(dǎo)致因?yàn)檠h(huán)引用而出現(xiàn)內(nèi)存泄漏。

7. 描述一下UIButton類的繼承關(guān)系,直到NSObject。

NSObject <- UIResponder <- UIView <- UIControl <- UIButton

8. 什么是@dynamic?

@synthesize 編譯器自動(dòng)生成setter和getter。 @dynamic 需要手工實(shí)現(xiàn)setter和getter,并且不能在后面用=號(hào)標(biāo)明對(duì)應(yīng)的實(shí)例變量。 @compatibility_alias 給類起別名。

@compatibility_alias DVINewStudent DVIStudent;

@encode 獲取類型的字符串,可以用來(lái)判斷類型。

@encode(int) //i
@encode(CGRect) //{CGRect={CGPoint=ff}{CGSize=ff}}
@encode(DVIStudent) //{DVIStudent=#}
9. 給一個(gè)對(duì)象發(fā)送performSelector:withObject:afterDelay:消息后,會(huì)給對(duì)對(duì)象進(jìn)行retain嗎?

給對(duì)象發(fā)送延時(shí)執(zhí)行的消息會(huì)對(duì)對(duì)象進(jìn)行retain操作,并且在方法執(zhí)行完后進(jìn)行release操作。

10. NSCoder類的用途是什么?

NSCoder是一個(gè)抽象的基類,為子類定義了在對(duì)象和其它Objective-C數(shù)據(jù)在內(nèi)存和其它格式直接進(jìn)行轉(zhuǎn)換的能力,是歸檔(將對(duì)象和數(shù)據(jù)存放到磁盤(pán))和分發(fā)(在進(jìn)程和線程直接進(jìn)行數(shù)據(jù)傳遞)的基礎(chǔ)。在基礎(chǔ)框架(Foundation)中提供了NSKeyedArchiver、NSKeyedUnArchiver等子類。NSCoder可以操作對(duì)象、標(biāo)量、C語(yǔ)言數(shù)組、結(jié)構(gòu)體、字符串等,但是不支持聯(lián)合體、void指針、函數(shù)指針等與平臺(tái)實(shí)現(xiàn)相關(guān)的數(shù)據(jù)類型。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:長(zhǎng)沙戴維營(yíng)教育iOS開(kāi)發(fā)面試題周刊-創(chuàng)新互聯(lián)
路徑分享:http://chinadenli.net/article14/djjoge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、微信小程序、網(wǎng)站營(yíng)銷、服務(wù)器托管、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
日本一区二区三区久久娇喘| 国产精品福利一级久久| 日韩欧美一区二区久久婷婷 | 国产免费操美女逼视频| 国产黑人一区二区三区| 妻子的新妈妈中文字幕| 91在线爽的少妇嗷嗷叫| 亚洲视频一区自拍偷拍另类| 亚洲综合天堂一二三区| 成年女人下边潮喷毛片免费| 神马午夜福利免费视频| 久久精品免费视看国产成人| 日本不卡片一区二区三区| 加勒比人妻精品一区二区| 夫妻激情视频一区二区三区| 激情五月激情婷婷丁香| 欧洲一区二区三区自拍天堂| 人妻巨大乳一二三区麻豆| 黄色三级日本在线观看| 亚洲一区二区三区熟女少妇| 国产精品不卡一区二区三区四区| 国产精品激情在线观看| 日韩欧美三级中文字幕| 国产午夜精品美女露脸视频| 黑人巨大精品欧美一区二区区| 日韩三级黄色大片免费观看| 国产一区二区不卡在线播放| 欧美一区二区三区高潮菊竹| 亚洲三级视频在线观看免费| 在线视频三区日本精品| 色综合久久六月婷婷中文字幕| 福利专区 久久精品午夜| 中文字幕乱码免费人妻av| 中文字幕区自拍偷拍区| 字幕日本欧美一区二区| 视频一区中文字幕日韩| 中文字幕精品一区二区三| 亚洲中文字幕视频在线观看| 年轻女房东2中文字幕| 国产肥妇一区二区熟女精品| 久久精品久久精品中文字幕|