iOS 9的新的改变 iOS SDK Release Notes for iOS 9 说了些改变
看了下还算能理解!!!有兴趣可以看看哈!!!不喜勿喷!!后面的对于废除的方法什么有用感觉!!!
ios9 iOS SDK更新内容介绍
重点介绍:
这是一个初步的文档的API或技术发展。苹果是提供这一信息来帮助你计划的采用所述技术和编程接口使用品牌产品。此信息可能发生变化,根据这个文档和软件实现应与最后的操作系统软件测试和最终的文档。新版本的文档可以提供未来贝塔的API或技术。
内容:
介绍
iOS SDK 9.0提供了支持开发iOS应用程序。是一套完整的Xcode打包工具,编译器为iOS和OS x和框架来创建应用这些工具包括Xcode IDE和仪器分析工具,在许多其他人。
使用这个软件可以为iPhone开发应用程序,iPad,或iPod touch运行iOS 9。您还可以使用包括模拟器测试您的应用程序,它支持iOS 9。iOS SDK 9.0需要Mac电脑运行OS X v10.10.3(约塞米蒂)或更高版本。
这个版本的iOS只适用于安装在设备注册苹果开发者计划。尝试安装这个版本的iOS以未经授权的方式可以把你的设备处于不可用状态。
额外的支持资源的更多信息,请访问http://developer.apple.com/programs/ios/。
Bug报告
问题不是笔记和已知问题中提到的部分,请文件错误通过苹果开发者网站(https://developer.apple.com/bug-reporting/ios/)。此外,你可以讨论这些问题和苹果的iOS SDK 9.0开发者论坛。获得更多的信息关于iCloud对于开发人员来说,访问http://developer.apple.com/icloud。
笔记和已知问题
以下问题涉及到使用iOS SDK 9.0开发代码。
应用程序商店
请注意
iOS 9执行UILaunchImages要求;应用程序不能再申报方向相同的启动图像支持不同的接口。
已知问题
用户可能被提示两次凭证第一内购。
苹果ID
一些用户将打开两因素身份验证的苹果ID。关于双重认证的更多信息见developer.apple.com/support/two-factor-authentication。
如果你打开两因素身份验证您的苹果ID,iTunes购买在Mac和Windows和商店购买苹果电视将需要附加一个6位数字作为验证码到你的密码你第一次使用该设备。6位代码将自动显示在你的iOS 9或OS X埃尔卡皮坦设备,或者可以发送给你信任的电话号码通过短信或电话。
苹果支付
请注意
邮政编码的格式返回之前充分授权已经从iOS 8。在某些情况下,它可能是截断之前返回。
AVFoundation
笔记
AVPlayerItem canUseNetworkResourcesForLiveStreamingWhilePaused财产已被添加。默认值是没有有关的应用程序或之后的iOS 9.0或OS X 10.11,但对应用程序有关。
尽量减少用电,设置这个属性没有如果你不需要播放暂停时保持最新状态。
AVQueuePlayer现在支持的基于文件的媒体和HTTP流媒体生活在队列中。在这之前,你必须确保所有项目相同类型的队列中。
针对iOS应用程序与9或更高,媒体中断行为AV(队列)球员已经改变了。
在iOS 9之前,应用程序可以通过关联或中断其他媒体播放客户添加AVPlayerItem AVPlayer,或者修改当前的时间和日期AVPlayerItem(使用seekToTime:或seekToDate:方法)。在iOS 9中,这些操作中断只有当AVPlayer对象的回放速度是通过速度改为非零值的属性或方法。
画中画播放可能停止和画中画按钮可能消失在使用AVPlayerViewController视频回放和更换底层AVPlayer对象的当前项目使用replaceCurrentItemWithPlayerItem:。
cancelPictureInPicture方法弃用。
蓝牙
已知问题
配对的三浦MFI配件iOS 9设备无法工作。
解决方法:不要删除配对iOS更新后9。
CBCentralManager
请注意
retrievePeripherals:和retrieveConnectedPeripherals方法被弃用iOS 7.0和iOS 9.0中移除。应用程序使用这些方法会崩溃在启动或配对一个附件。
基金会
有新的基础API可以用来检测如果设备处于低功耗模式。看到更新的能效指南iOS应用程序的细节。
水平位置约束应该始终参考左/右或领先/落后于属性。对iOS应用程序与9 SDK,NSLayoutConstraint将抛出一个异常,如果你试图创建一个约束之间的领先/落后于属性和左/右属性。
iCloud开车
请注意
CKFetchRecordChangesOperation fetchAllChanges属性已经被弃用,iOS 9将被删除。
键盘
请注意
设置为使用第三方键盘作为默认键盘文本输入并不总是受人尊敬的。
钥匙链
请注意
iCloud密钥链不会同步密码和信用卡的贝塔iOS 9和OS X埃尔卡皮坦。
音乐
请注意
当用户插入耳机或蓝牙连接或CarPlay在他们的车,他们最喜欢的音乐应用程序出现在锁定屏幕或汽车展示。
有资格对你的应用程序,它必须发布到现在玩在发射和始终保持播放状态。常见的做法在发射是继续玩跟踪从去年退出应用程序时。
已知问题
一些追踪你以前购买的不会玩。
处理:标志的商店然后签回。
网络
笔记
当谈判一个TLS / SSL连接diffie - hellman密钥交换,iOS 9需要1024位组或更大。这些连接包括:
安全Web(HTTPS)
企业wi - fi(802.1倍)
安全电子邮件(IMAP、流行、SMTP)
打印服务器(绿皮书)
DHE_RSA密码套件现在残疾为TLS客户违约的安全传输。这可能导致连接故障TLS服务器只支持DHE_RSA密码套件。应用程序显式地启用密码套件使用SSLSetEnabledCiphers不受影响,仍将使用DHE_RSA如果显式地启用密码套件。
旅行可以看到一个“Safari不能建立一个安全的连接到服务器”错误页面。Safari和CFNetwork API的其他客户(NSURLSession NSURLConnection,CFHTTPStream,CFSocketStream和可可当量)将显示“CFNetwork SSLHandshake失败”错误控制台。
随需应变的资源
已知问题
新的或变更的随需应变的资源资产包添加或更改作为应用程序的一部分更新可能无法访问该应用程序。
解决方案:包括新的或更新的资产包直接在应用程序包。
ReplayKit
已知问题
播放视频虽然ReplayKit录音停止正在进行的录音和视频无法播放。
恢复
已知问题
如果你设置一个区域不匹配你的语言,从iCloud备份恢复不可能进步。
解决方法:在恢复期间,改变你的地区来匹配你的语言。你可以改变它恢复后就结束了。
Safari
笔记
SFSafariViewController当完成了,它是自动解散。你不再需要关闭它的委托方法safariViewControllerDidFinish:。
“找到页”现在可以从共享表以及在完成列表中。
请求桌面网站了,现在在分享表而不是最爱。
Web Browser-to-Native应用切换不使用你的应用如果apple-app-site-association文件不是正确格式化并签署。有关更多信息,请参见切换编程指南和参考共享网络凭据。
安全传输
请注意
DHE_RSA密码套件现在在安全传输,在默认情况下禁用TLS的客户。这可能导致连接故障TLS服务器只支持DHE_RSA密码套件。应用程序显式地启用密码套件使用SSLSetEnabledCiphers不受影响,仍将使用DHE_RSA如果显式地启用密码套件。
UIKit
笔记
如果初始化零nibName价值,ui。nibName一直寻找的nib类似名称的视图控制器类,,如果不是未经覆盖默认值。
iOS 9之前,子类的ui斯威夫特写的要求相应的nib文件名称包括模块前缀。
提高灵活性的重构,可以省略的nib文件的模块名称代码运行在iOS 9。ui。nibName仍然喜欢包含模块名称前缀,但回落到一个不合格的名字如果没有找到nib的完全限定名称。
在iOS 9中,当layoutIfNeeded发送到一个视图和满足以下所有条件(不常见),我们应用fitting-size约束在UILayoutPriorityFittingSizeLevel(宽/高= 0),而不是所需的尺寸约束(宽/高要求匹配当前大小):
接收方还没有在一个视图的子树,主持一个布局引擎,如窗口中,视图控制器的视图(除非你没有设置translatesAutoresizingMaskIntoConstraints视图或创建约束在子树和一项一项外),表视图单元格内容视图,等等。
最后的祖先(即顶层视图)的接收机translatesAutoresizingMaskIntoConstraints设置为无。
顶层视图的子视图不是UIViewController-owned布局指导,也有translatesAutoresizingMaskIntoConstraints设置为无。
条件下,我们创建一个临时的布局引擎从顶层视图和添加的子树的所有约束。问题是我们需要添加一些约束,使顶层视图的大小明确的布局引擎。iOS之前旧的行为(9),我们将添加约束限制顶层视图的大小为任何情况下当前的边界条件下1。这真的没有意义,当你添加条件2和3,可能导致unsatisfiable-constraints日志和破碎的布局。
所以在iOS 9中,对于这个特殊的情况,我们使用fitting-size约束。
这意味着,如果你发送layoutIfNeeded视图在这些条件下在iOS 9中,你必须确保你有足够的约束建立顶层视图的大小(通常,但并非总是,是接收机)或您必须添加临时尺寸约束的顶层视图布局尺寸你想要发送layoutIfNeeded之前,和之后删除它们。
对iOS应用程序与9或更高,UITextView现在将总是正确地收缩其NSTextContainer视图内的适合当滚动是禁用的。NSTextContainer满溢的线之外,甚至部分,不呈现。
iOS在以前的版本中,NSTextContainer有时没有大小限制。这意味着逻辑上的线被错误地呈现。如果你看到之前呈现的行结束时你的文本视图不再呈现链接对iOS应用程序9之后,这种行为改变是可能的原因。你可以补救这个通过UITextView较大,或者通过调整值的文本视图的底部textContainerInset财产。
有一个重新设计的UI印刷,包括打印预览(从UIPrintInteractionController或UIActivityViewController)。为应用程序提供印刷物品或只使用内置UIPrintFormatter对象(如UISimpleTextPrintFormatter UIMarkupTextPrintFormatter、UIWebViewPrintFormatter或任何系统提供的UIViewPrintFormatter视图),没有额外的需要打印预览显示。
应用子类UIPrintPageRenderer或UIPrintFormatter画内容打印必须建立与iOS 9 SDK预览显示。UIPrintPageRenderer已经更新的行为叫drawPageAtIndex:inRect:多次与潜在的不同的页面大小和利润率。各种方法在UIPrintPageRenderer可能从一个非主要的线程调用,但从未同时从多个线程。
UIPickerView UIDatePicker现在可调整大小的adaptive-previously,这些观点将执行默认大小即使你试图调整它们。这些观点现在也默认的宽度320点在所有设备上,而不是在iPhone设备宽度。
接口依赖旧的默认大小可能会执行编译时错误寻找iOS 9。遇到任何问题可以被完全约束或解决大小选择视图所需的大小,而不是依靠隐式的行为。
Webkit
请注意
如域名和unless-domain值字符串只匹配的域。匹配的域和子域,开始字符串用星号(*)。
本文由大学霸整理,转载请注明出处,尊重IT人!
原文:iOS SDK Release Notes for iOS 9
Important:
This is a preliminary document for an API or technology in development. Apple is supplying this information to help you plan for the adoption of the technologies and programming interfaces described herein for use on Apple-branded products. This information is subject to change, and software implemented according to this document should be tested with final operating system software and final documentation. Newer versions of this document may be provided with future betas of the API or technology.
Contents:
Introduction
Bug Reporting
Notes and Known Issues
Introduction
iOS SDK 9.0 provides support for developing iOS apps. It is packaged with a complete set of Xcode tools, compilers, and frameworks for creating apps for iOS and OS X. These tools include the Xcode IDE and the Instruments analysis tool, among many others.
With this software you can develop apps for iPhone, iPad, or iPod touch running iOS 9. You can also test your apps using the included Simulator, which supports iOS 9. iOS SDK 9.0 requires a Mac computer running OS X v10.10.3 (Yosemite) or later.
This version of iOS is intended for installation only on devices registered with the Apple Developer Program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.
For more information and additional support resources, visit http://developer.apple.com/programs/ios/.
Bug Reporting
For issues not mentioned in the Notes and Known Issues section, please file bugs through the Apple Developer website (https://developer.apple.com/bug-reporting/ios/). Additionally, you may discuss these issues and iOS SDK 9.0 in the Apple Developer Forums. To get more information about iCloud for Developers, go to http://developer.apple.com/icloud.
Notes and Known Issues
The following issues relate to using iOS SDK 9.0 to develop code.
App Store
Note
iOS 9 enforces the UILaunchImages requirement; apps can no longer declare the same launch image to support different interface orientations.
Known Issue
Users might be prompted twice for credentials on the first In-App Purchase.
Apple ID
Notes
Some users will be offered to turn on two-factor authentication on their Apple ID. For more information about two-factor authentication see developer.apple.com/support/two-factor-authentication.
If you turn on two-factor authentication on your Apple ID, iTunes purchases on Mac and Windows and store purchases on Apple TV will require you to append a six-digit verification code to the end of your password the first time you use that device. The six-digit code will display automatically on your iOS 9 or OS X El Capitan devices, or can be sent to your trusted phone number via a text message or phone call.
Apple Pay
Note
The format of the postal code that is returned prior to full authorization has changed from iOS 8. In some cases, it may be truncated from what was previously being returned.
AVFoundation
Notes
The canUseNetworkResourcesForLiveStreamingWhilePaused property has been added to AVPlayerItem. The default value is NO for apps linked on or after iOS 9.0 or OS X 10.11, but YES for apps that were linked earlier.
To minimize power usage, set this property to NO if you do not need playback state to stay up to date while paused.
AVQueuePlayer now supports a mixture of file-based media and HTTP Live Streaming media in its queue. Prior to this, you had to ensure that all items in the queue were of the same type.
For apps linked against iOS 9 or later, the media interruption behavior for AV(Queue)Player has changed.
Before iOS 9, apps could interrupt other media-playing clients by associating or adding AVPlayerItem to AVPlayer or by modifying the time or date of the current AVPlayerItem (using the seekToTime: or seekToDate: methods). In iOS 9, these operations interrupt only when AVPlayer object’s playback rate is changed to a non-zero value through the rate property or play method.
Picture in Picture playback might stop and the Picture in Picture button might disappear when using AVPlayerViewController for video playback and replacing the underlying AVPlayer object’s current item using replaceCurrentItemWithPlayerItem:.
The cancelPictureInPicture method is deprecated.
Bluetooth
Known Issue
Pairing a Miura MFI accessory to an iOS 9 device will not work.
Workaround: Do not remove pairing after updating to iOS 9.
CBCentralManager
Note
The retrievePeripherals: and retrieveConnectedPeripherals methods were deprecated in iOS 7.0 and removed in iOS 9.0. Apps that use these methods will crash on launch or upon pairing an accessory.
Foundation
Notes
There is new Foundation API that can be used to detect if the device is in Low Power Mode. See the updated Energy Efficiency Guide for iOS Apps for details.
Horizontal location constraints should consistently reference either left/right or leading/trailing attributes. For apps linked against the iOS 9 SDK, NSLayoutConstraint will throw an exception if you attempt to create a constraint between a leading/trailing attribute and a left/right attribute.
iCloud Drive
Note
The fetchAllChanges property on CKFetchRecordChangesOperation has been deprecated, and will be removed in iOS 9.
Keyboards
Note
The setting to use a third-party keyboard as the default keyboard for text input is not always respected.
Keychain
Note
iCloud Keychain will not sync passwords and credit cards with betas of iOS 9 and OS X El Capitan.
Music
Note
When users plug in headphones or connect to Bluetooth or CarPlay in their car, their favorite music app appears on the lock screen or the car display.
For your app to be eligible for this, it must publish to Now Playing upon launch and consistently maintain a Now Playing state. A common practice upon launch is to continue playing the track from when the app was last exited.
Known Issue
Some tracks you have previously purchased won’t play.
Workaround: Sign out of the Store and then sign back in.
Networking
Notes
When negotiating a TLS/SSL connection with Diffie-Hellman key exchange, iOS 9 requires a 1024-bit group or larger. These connections include:
Secure Web (HTTPS)
Enterprise Wi-Fi (802.1X)
Secure e-mail (IMAP, POP, SMTP)
Printing servers (IPPS)
DHE_RSA cipher suites are now disabled by defaults in Secure Transport for TLS clients. This may cause failure to connect to TLS servers that only support DHE_RSA cipher suites. Applications that explicitly enable cipher suites using SSLSetEnabledCiphers are not affected and will still use DHE_RSA cipher suites if explicitly enabled.
Safari may see a “Safari can’t establish a secure connection to the server” error page. Safari and other clients of CFNetwork API (NSURLSession, NSURLConnection, CFHTTPStream, CFSocketStream and Cocoa equivalent) will show “CFNetwork SSLHandshake failed” error in Console.
On-Demand Resources
Known Issue
New or changed on-demand resource assets packs that are added or changed as part of an app update may be inaccessible to the application.
Workaround: Include the new or updated asset packs directly in the application bundle.
ReplayKit
Known Issue
Playing a video while ReplayKit recording is ON stops the ongoing recording session and the video fails to play.
Restore
Known Issue
If you’ve set a region that doesn’t match your language, restores from iCloud Backup might not progress.
Workaround: During restore, change your region to match your language. You can change it back after the restore is over.
Safari
Notes
When Done is tapped in a SFSafariViewController, it is automatically dismissed. You no longer need to dismiss it in the delegate method safariViewControllerDidFinish:.
“Find on Page” is now available both from the Share sheet as well as in the Completions List.
Request Desktop Site has moved; it’s now in the Share sheet instead of Favorites.
Web Browser–to–Native App Handoff does not work with your app if the apple-app-site-association file isn’t correctly formatted and signed. For more information, see Handoff Programming Guide and Shared Web Credentials Reference.
Secure Transport
Note
DHE_RSA cipher suites are now disabled by default in Secure Transport for TLS clients. This may cause failure to connect to TLS servers that only support DHE_RSA cipher suites. Applications that explicitly enable cipher suites using SSLSetEnabledCiphers are not affected and will still use DHE_RSA cipher suites if explicitly enabled.
UIKit
Notes
If initialized with a nil nibName value, UIViewController.nibName has always looked for a nib with a similar name as the view controller’s class, and defaulted to that value if loadView is not overridden.
Prior to iOS 9, subclasses of UIViewController that were written in Swift would require that their corresponding nib file name include the module prefix.
To improve flexibility in the event of refactoring, you can omit the module name from the nib filename in code that runs in iOS 9. UIViewController.nibName still prefers a name that contains the module prefix, but falls back to an unqualified name if a nib with the fully-qualified name is not found.
In iOS 9, when layoutIfNeeded is sent to a view and all of the following conditions are satisfied (which is not common), we apply fitting-size constraints (width/height = 0 at UILayoutPriorityFittingSizeLevel) instead of required size constraints (width/height required to match current size):
The receiver is not yet in the subtree of a view that hosts a layout engine, such as window, view controller view (unless you have set translatesAutoresizingMaskIntoConstraints to NO on that view—or created constraints that have one item in its subtree and one item outside it), table view cell content view, and so on.
The final ancestor (that is, top-level view) of the receiver has translatesAutoresizingMaskIntoConstraints set to NO.
The top-level view has a subview that is not a UIViewController-owned layout guide that also has translatesAutoresizingMaskIntoConstraints set to NO.
Under condition 1, we create a temporary layout engine from the top-level view and add all the constraints from the subtree to it. The problem is that we need to add some constraints that make the size of the top-level view unambiguous in the layout engine. The old behavior (prior to iOS 9) was that we would add constraints to restrict the size of the top-level view to its current bounds for any situation under condition 1. This really doesn’t make sense when you add conditions 2 and 3 and can result in unsatisfiable-constraints logging and broken layout.
So in iOS 9, for this special case only, we use fitting-size constraints instead.
This means that if you are sending layoutIfNeeded to a view under these conditions in iOS 9, you must be sure that either you have sufficient constraints to establish a size for the top-level view (which usually, though not always, is the receiver) or you must add temporary size constraints to the top-level view of layout size you desire before sending layoutIfNeeded, and remove them afterward.
For apps linked on iOS 9 or later, UITextView will now always correctly constrict its NSTextContainer to the fit inside the view when scrolling is disabled. Overflowing lines that lie outside of an NSTextContainer, even partially, are not rendered.
In previous iOS releases, the NSTextContainer sometimes was not constricted in size. This meant that logically overflowing lines were erroneously rendered. If you are seeing previously rendered lines at the end of your text view no longer rendered after linking your app against iOS 9, this behavior change is the likely cause. You can remedy this by making your UITextView larger, or perhaps by adjusting the bottom value of the text view's textContainerInset property.
There is a redesigned UI for printing that includes a print preview (presented from UIPrintInteractionController or UIActivityViewController). For apps that provide printing items or use only built-in UIPrintFormatter objects (such as UISimpleTextPrintFormatter, UIMarkupTextPrintFormatter, UIWebViewPrintFormatter, or the UIViewPrintFormatter of any system-provided view), nothing additional is needed for the print preview to display.
Apps that subclass UIPrintPageRenderer or UIPrintFormatter to draw content for printing must be built with the iOS 9 SDK for the preview to display. The behavior of UIPrintPageRenderer has been updated to call drawPageAtIndex:inRect: multiple times with potentially different page sizes and margins. Various methods on UIPrintPageRenderer may be called from a non-main thread, but never from multiple threads concurrently.
UIPickerView and UIDatePicker are now resizable and adaptive—previously, these views would enforce a default size even if you attempted to resize them. These views also now default to a width of 320 points on all devices, instead of to the device width on iPhone.
Interfaces that rely on the old enforcement of the default size will likely look wrong when compiled for iOS 9. Any problems encountered can be resolved by fully constraining or sizing picker views to the desired size instead of relying on implicit behavior.
Webkit
Note
The if-domain and unless-domain value strings only match the exact domain. To match the domain and any subdomains, begin the string with the asterisk character (*).