iOS開發知識要點

來源:互聯網
上載者:User
關於String:

1,把一個整數,轉換成一個NSString

[NSString stringWithFormat:@"%d",3];

2,比較兩個NSString是否相等

[@"test" isEqualToString:@"test"];

3,@"abcdefg",截取第兩個字元開始的三個字元

[@"abcdefg" substringWithRange:NSMakeRange(1, 3)]

4,講解UTF8與Unicode的區別與關係

這裡有詳細講解

5,NSString , NSMutableString的區別

NSString, 不可修改字串
NSMutableString,可修改字串

6,計算一個字串在指定寬度,指定字型情況下,需要渲染的實際像素高度

[@"abcdefg" sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(100, INT32_MAX)].height

7,用HTTP協議,擷取www.baidu.com網站的HTML資料

[NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]]
UIView與UIViewController:

1,說明UIView中 frame與bounds的區別

frame: UIView執行個體的位置與大小資訊
bounds: UIView執行個體的顯示內部內容的位置與大小資訊

2,簡單講解UITableView的UITableViewDataSource與UITableViewDelegate的作用

這兩個都是UITableView所需要的協議:
UITableViewDataSource,使用者定義此tableView的資料擷取方法,用來提供資料來源
UITableViewDelegate,用來定義顯示樣式與使用者事件相關方法

3,實現一個帶背景UIView的透明漸層動畫效果,與移動動畫效果

//動畫配製開始[UIView beginAnimations:@"animation" context:nil];[UIView setAnimationDuration:.5];//圖片上升動畫CGRect f = imgView.frame ;f.origin.y = 30;imgView.frame = f;//半透明度漸層動畫imgView.alpha = 0;//提交動畫[UIView commitAnimations];

4,使一個UIImageView的圖片視圖對象,隨著改變它的frame而自適應做展開。

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];imgView.frame = CGRectMake(0, 0, 200, 200);imgView.contentMode = UIViewContentModeScaleToFill;

5,使一個UIView對象,在螢幕旋屏後,保持居上位置不變,居左位置自適應,大小不變

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];imgView.frame = CGRectMake(20,20, 100, 100);imgView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

6,UIView中所使用的設計模式,越多越好~

7,用UIView的layer中的某個屬性,實現一個圓角視圖(需要引入Quartz2D庫)

self.view.layer.cornerRadius = 5;self.view.clipsToBounds = YES;

8,UIScrollView中contentSize的作用

用來標識當前內容顯示的位置,類型是CGSize

9,UIViewController與View的關係,在MVC模式中的角色

一個是Controller層,一個是View層,Controller控制View的顯示。

10,列舉幾種系統ViewController

UITabBarController
UINavigationController
UITableViewController
UIImagePickerController

11,UIView中方法drawRect與layoutSubviews的區別,

當調用view的setNeedsDisplay時,系統非同步呼叫drawRect方法,並配製圖形的上下文供在此方法內使用Quartz2D API。
當調用view的setNeedsLayout時,系統非同步呼叫layoutSubviews方法,但不配製圖形上下文,只做頁面配置使用

12,UIView中的clipsToBounds屬性的作用

子視圖的大小超過父視圖時,如果此屬值為YES,則把多餘的部分隱藏,反之依然。

13,如果UIView中的一個子View的位置在此UIView之外,是否還可以擷取此UIView的touchesBegan等方法

擷取不到

14,如何判斷使用者雙擊操作

在touchesBegan方法中,擷取UITouch執行個體:
[ [ touches anyObject ] tapCount];

15,在UIView的drawRect方法內,用Quartz2D API繪製一個像素寬的水平直線

-(void)drawRect:(CGRect)rect{//擷取圖形上下文    CGContextRef context = UIGraphicsGetCurrentContext();//設定圖形內容相關的路徑繪製顏色CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);//取消防鋸齒CGContextSetAllowsAntialiasing(context, NO);//添加線CGContextMoveToPoint(context, 50, 50);CGContextAddLineToPoint(context, 100, 50);//繪製CGContextDrawPath(context, kCGPathStroke);}

16,用UIWebView載入: www.baidu.com

UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];[web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];[self.view addSubview:web];[web release];

17,子線程是否也可以修改UIView

不能,只有主線程有直接修改UI的能力。
記憶體相關:

1,retain是作什麼用的,在記憶體管理中起到什麼作用,與之對應的釋放方法是什麼

使執行個體的引用計數(retainCount)加一,與之對應的釋放方法有:release, autorelese。

2,NSObject *o = [ [ NSObject new ] autorelease ]; 此句執行完後,此對象"o"的retainCount是多少

為1

3,講解NSAutoreleasePool在Objective-C中記憶體管理的作用

記憶體管理池, 使Objective-C上升為半自動化的記憶體管理語言.

4,簡單講解@property中的聲明,assign 與 retain的區別,並實現一個retain聲明屬性的setter方法

這兩個都為對setter方法的聲明,只能其一。
assign, 標明setter方法僅以指標賦值的方式實現
retain,setter方法,必須實現retain操作。
-(void)setName:(NSString*)_name{    if(name != _name){       [name release];       name = [_name retain];    }}

5,NSArray *arr = [ NSArray array ]; 此arr對象需不需要release,為什麼

不需要,因為沒有retain, alloc, new, copy等方法。
此為cocoa約定俗成的建立對象的便捷方法,此執行個體的一個retainCount已經被放入autoreleasePool中。
runtime與cocoa架構:

1,id,在Objective-C中表示什麼,起什麼作用

可以指向任何執行個體的類型,它為一個僅含有一個Class類型的isa成員指標的結構體。
typedef struct objc_class *Class;typedef struct objc_object {    Class isa;} *id;struct objc_class {    Class isa;#if !__OBJC2__    Class super_class                                        OBJC2_UNAVAILABLE;    const char *name                                         OBJC2_UNAVAILABLE;    long version                                             OBJC2_UNAVAILABLE;    long info                                                OBJC2_UNAVAILABLE;    long instance_size                                       OBJC2_UNAVAILABLE;    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;#endif} OBJC2_UNAVAILABLE;

2,NSArray, NSMutableArray, NSDictionary, NSMutableDictionary, NSSet, 的作用

這些是cocoa架構中常用容器,用來存放不同目的的執行個體。
NSArray,為儲存一系列有序執行個體,一旦建立不可添加修改列表。
NSMutableArray,用於建立可變對象列表的有序執行個體。
NSDictionary,存放索引值對的資料,形如Hash。
NSSet,存放無序資料。

3,NSNumber, NSValue的用法

NSNumber,用於存放數值資訊相關類,此執行個體可直接存放在cocoa容器中。
NSValue,用於儲存資料結構體。

4,NSObject 的結構定義中的isa是什麼

是Class類型的一個資料結構體,
struct objc_class {    Class isa;#if !__OBJC2__    Class super_class                                        OBJC2_UNAVAILABLE;    const char *name                                         OBJC2_UNAVAILABLE;    long version                                             OBJC2_UNAVAILABLE;    long info                                                OBJC2_UNAVAILABLE;    long instance_size                                       OBJC2_UNAVAILABLE;    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;#endif} OBJC2_UNAVAILABLE;

5,Objective-C語言的動態性的特性與實現(Runtime)

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html

6,怎樣判斷一個對象是否是一個類的執行個體

[ testView isKindOfClass:[ UIView class ] ];

7,怎麼判斷一個對象是否含有指定方法

[testView respondsToSelector:@selector(methodName)];

8,用NSTimer做一個定時器,每隔一秒列印: hello world

-(void)printHello{NSLog(@"hello world!!");}-(IBAction)clickBtn:(id)sender{NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1  target:selfselector:@selector(printHello)userInfo:nil repeats:YES];[timer fire];}

9,用NSObject 的 performSelectorInBackground 建立子線程,並在子線程完成一次HTTP請求,把請求結果顯示在螢幕上

Archive.zip

10,NSNotificenter的作用,說明怎樣實現Observer模式

訊息分發與註冊中心。用來管理在在訊息中心中註冊監聽的對象,並在發生事件時,把訊息分發送給監聽此事件的監聽者。
此為典型的Observer模式的實現。在我們的應用中,為瞭解偶模組之間的偶合度,會大量使用訊息中心,以事件與訊息去驅動模組與模組之間的協作。

11,簡要說明NSRunloop

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW1
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.