81. 阐述Cocoa touch框架? |
iPhone OS 应用程序的基础 Cocoa Touch 框架重用了许多 Mac 系统的成熟模式,但是它更多地专注于触摸的接口和优化。 |
UIKit 为您提供了在 iPhone OS 上实现图形,事件驱动程序的基本工具,其建立在和 Mac OS X 中一样的 Foundation 框架上,包括文件处理,网络,字符串操作等。 |
Cocoa Touch 具有和 iPhone 用户接口一致的特殊设计。 有了 UIKit,您可以使用 iPhone OS 上的独特的图形接口控件,按钮,以及全屏视图的功能,您还可以使用加速仪和多点触摸手势来控制您的应用。 |
各色俱全的框架 除了UIKit 外,Cocoa Touch 包含了创建世界一流 iPhone 应用程序需要的所有框架,从三维图形,到专业音效,甚至提供设备访问 API 以控制摄像头,或通过 GPS 获知当前位置。 |
Cocoa Touch 既包含只需要几行代码就可以完成全部任务的强大的 Objective-C 框架,也在需要时提供基础的 C 语言 API 来直接访问系统。这些框架包括: Core Animation:通过 Core Animation,您就可以通过一个基于组合独立图层的简单的编程模型来创建丰富的用户体验。 Core Audio:Core Audio 是播放,处理和录制音频的专业技术,能够轻松为您的应用程序添加强大的音频功能。 Core Data:提供了一个面向对象的数据管理 解决方案,它易于使用和理解,甚至可处理任何应用或大或小的数据模型。 |
功能列表:框架分类 下面是 Cocoa Touch 中一小部分可用的框架: 音频和视频:Core Audio ,OpenAL ,Media Library ,AV Foundation 数据管理 :Core Data ,SQLite 图形和动画 :Core Animation ,OpenGL ES ,Quartz 2D 网络:Bonjour ,WebKit ,BSD Sockets 用户应用:Address Book ,Core Location ,Map Kit ,Store Kit |
🚀🚀🚀🚀🚀🚀 |
82. Objective-C的优缺点? |
优点 (1)类别(Category) 在不创建继承类的情况下,给已经存在的类添加方法。可将常用的相关方法分组。(@interface 类名(类别名) @end) (2) 扩展 扩展实际上是类别无类别名称。它通常被称为匿名类别。声明扩展的语法使用@ interface关键字,空括号。(@interface 类名() @end) (3)冒充(Posing) 可以使子类冒充父类,可以方便的让父类表现成子类的实现。([FracitonChild poseAsClass [Fraction class]]; ) |
缺点 (1)不支持命名空间 (2)不支持多继承 |
🚀🚀🚀🚀🚀🚀 |
83. IOS对象的方法里面:self.name= “object”;和 name =”object” 有什么不同吗? |
self.name =”object”:会调用对象的setName()方法; name = “object”:会直接把object赋值给当前对象的name属性 |
🚀🚀🚀🚀🚀🚀 |
84. Object-C数组添加nil元素有问题吗?字典object与key可以设置为nil吗? |
会有问题,数组中添加nil元素,程序会崩溃!报object cannot be nil错误。 字典的key不能为nil,否则会造成崩溃。 字典的object也不能为nil。 |
🚀🚀🚀🚀🚀🚀 |
85. Object-C数组能添加一个block吗?数组添加一个block之后再取出来,这个block还有用吗? |
可以,还有用,它只是多retain了一次 |
🚀🚀🚀🚀🚀🚀 |
86. NSMutableDictionary中的setObject:forKey:与setValue:forKey:方法有什么区别? |
setValue:forKey:是NSKeyValueCoding协议的一部分,除其他外,它允许您从Interface Builder等访问对象属性. setValue:forKey:是在除了以外的类中实现的NSDictionary. |
setObject:forKey:是NSMutableDictionary's存在的理由. 它的签名恰好与setValue:forKey:非常相似,但更通用(例如任何键类型).签名非常相似,这有点巧合. |
更令人困惑的是,NSMutableDictionary的实现在大多数情况下setValue:forKey:都是等效的setObject:forKey:.在其他类中,setValue:forKey:更改成员变量. 在NSMutableDictionary,它会更改字典条目,除非您在键前加上"@"字符 - 在这种情况下,它会修改成员变量. |
因此,简而言之,setObject:forKey:当您需要使用字典键和值时,以及setValue:forKey:在需要处理KVP的极少数情况下使用. |
🚀🚀🚀🚀🚀🚀 |
87. Objective-C中类目为什么不能添加实例变量? |
因为在运行时,对象的内存布局已经确定,如果添加实例变量会破坏类的内部布局。 |
🚀🚀🚀🚀🚀🚀 |
88. Objective-C中的协议默认是@optional还是@require?在使用协议的时候应当注意哪些问题? |
Objective-C中的协议默是必须实现的@require,使用协议的时候应当注意循环引用问题,多个协议之间采用逗号分隔 |
🚀🚀🚀🚀🚀🚀 |
89. 简述NSURLConnection与NSURLSession? |
NSURLConnection它是CoreFoundation/CFNetwork框架的API之上的一个抽象。 |
NSURLConnection这个名字实际指代Foundation框架的URL加载系统中一系列有关联的组件:NSURLRequest、NSURLResponse、NSURLProtocol、NSURLCache、NSHTTPCookieStorage、NSURLCredentialStorage以及同名类NSURLConnection。NSURLRequest 被传递给 NSURLConnection。 被委托对象(遵守以前的非正式协议 和 )异步地返回一个 NSURLResponse 以及包含服务器返回信息的 NSData。 |
NSURLSession包括:NSURLRequest、NSURLCache、NSURLSession、NSURLSessionConfiguration、NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask。 甚至跨程序共享这些信息。每个NSURLSession对象都由一个NSURLSessionConfiguration对象来进行初始化。 |
🚀🚀🚀🚀🚀🚀 |
90. Object-C 字符串为什么要用copy修饰? |
是为了防止mutablestring被无意中修改,NSMutableString是NSString的子类。 因此NSString指针可以持有NSMutableString对象。 |
🚀🚀🚀🚀🚀🚀 |