你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS 基礎知識

iOS 基礎知識

編輯:關於IOS

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

    [@"abcdefg" sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(100, INT32_MAX)].height     2,用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;         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的顯示。     11,UIView中方法drawRect與layoutSubviews的區別,     當調用view的setNeedsDisplay時,系統異步調用drawRect方法,並配制圖形的上下文供在此方法內使用Quartz2D API。         當調用view的setNeedsLayout時, 系統異步調用layoutSubviews方法,但不配制圖形上下文,只做頁面布局使用 12,UIView中的clipsToBounds屬性的作用     子視圖的大小超過父視圖時,如果此屬值為YES,則把多余的部分隱藏,反之依然。 13,如果UIView中的一個子View的位置在此UIView之外,是否還可以獲取此UIView的touchesBegan等方法     獲取不到     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成員指針的結構體。     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:self                 selector:@selector(printHello)                 userInfo:nil                  repeats:YES];     [timer fire];   }   10,NSNotificenter的作用,說明怎樣實現Observer模式     消息分發與注冊中心。用來管理在在消息中心中注冊監聽的對象,並在發生事件時,把消息分發送給監聽此事件的監聽者。 此為典型的Observer模式的實現。在我們的應用中,為了解偶模塊之間的偶合度,會大量使用消息中心,以事件與消息去驅動模塊與模塊之間的協作。 11,簡要說明NSRunloop  
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved