最新更新日期:2012:05:31 看最新iOS面試題集錦,請時刻關注本部落格: http://blog.csdn.net/iukey/article/details/7590557 |
1、Object-C有多繼承嗎?沒有的話用什麼代替?
沒,protocol.
2、Object-C有私人方法嗎?私人變數呢?
沒,有。
3、#import和#include的區別,@class代表什嗎?
#import 能防止重複引用,#include 不能,@class 前置聲明一個類。
4、Object-C的記憶體管理?
引用計數器。
5、為什麼很多內建的類,如TableViewController的delegate的屬性是assign不是retain?
防止循環參考。
6、定義屬性時,什麼情況使用copy、assign、retain?
copy:拷貝對象。assign:傳值,一般用於基礎類型。retain:傳地址,引用計數器加一。
7、對象是什麼時候被release的?
引用計數器為0.
8、iOS有沒有記憶體回收?
沒。
9、tableView的重用機制?
複用標記。
10、ViewController 的loadView、viewDidLoad、viewDidUnload分別是什麼時候調用的,在自訂ViewController時在這幾個函數中應該做什麼工作?
當view為nil時調用loadView,view完成載入調用viewDidLoad,view釋放時調用viewDidUnload.
11、ViewController的didReceiveMemoryWarning是在什麼時候調用的?預設的操作是什嗎?
記憶體超過闕值,嘗試釋放view.
12、列舉Cocoa中常見的集中多線程的實現,並談談多安全執行緒的幾種解決辦法,一般什麼地方會用到多線程?
NSThread,GCD等。盡量用上層分裝好的方法去實現多線程而不是手動調用NSThread。
13、怎麼理解MVC,在Cocoa中MVC是怎麼實現的?
Model——View——Controller。
14、delegate和notification區別,分別在什麼情況下使用?
15、self.跟self什麼區別?
16、id、nil代表什嗎?
id相當於void*,nil是Null 物件。
17、記憶體管理 Autorelease、retain、copy、assign的set方法和含義?
18、類別的作用?
19、委託(舉例)
20、retainCount?
21、ObjC中,與alloc語義相反的方法是dealloc還是release?與retain語義相反的方法是dealloc還是release,為什嗎?需要與alloc配對使用的方法是dealloc還是release,為什嗎?
22、在一個對象的方法裡面:
self.name = “object”;和
name =”object”
有什麼不同嗎?
23、這段代碼有什麼問題嗎:
@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end
24、以下每行代碼執行後,person對象的retain count分別是多少
Person *person = [[Person alloc] init];
[person retain];
[person release];
[person release];
25、autorelease的對象是在什麼時候被release的?
26、這段代碼有什麼問題,如何修改
for (int i = 0; i < someLargeNumber; i++) {
NSString *string = @”Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@“%@”, string);
}
27、autorelease和記憶體回收機制(gc)有什麼關係?
28、什麼是Notification?
29、什麼時候用delegate,什麼時候用Notification?
30、什麼是KVC和KVO?
31、Notification和KVO有什麼不同?
32、KVO在ObjC中是怎麼實現的?
33、線程理解,有什麼好處
34、考察對@interface與@propety的理解
35、objective-c中的類型轉換分為哪幾類
36、多態的理解