SlideShare a Scribd company logo
What’s New in Xcode 8.0
Xcode 8 includes overall quality improvements as well as extensive new features.
● Security. Increased Xcode.app security due to runtime library validation
● Readability. New SF Mono font and updated syntax highlighting themes
● Downloading. Smaller download size and faster installation for App Store
downloads
● Accessibility. Enhanced accessibility in core Interface Builder workflows, and
throughout Xcode
● Usability. Xcode and Interface Builder improvements throughout to increase
performance and reduce memory use
● Reference. Faster, more space-efficient, easier-to-read documentation
1. Swift 3.0
Projects created with Xcode 8 use Swift 3 by default. Fortunately, Xcode 8
includes a build setting that gives developers the ability to stick with Swift 2,
Swift 2.3 to be precise.
This means that you can choose when you want to migrate a project to Swift
3. To configure a target for Swift 2.3, open the target's build settings and set
Use Legacy Swift Language Version to Yes.
Xcode 8 also includes a migration tool that helps you migrate a project to
Swift 3.
2. Source Editor Extensions
One of the most surprising features was the introduction of source editor
extensions. Developers have been asking for a native plugin architecture for
many years. Source editor extensions are a first good step in that direction.
There is a lot to like about extensions for Xcode, but Apple emphasizes that
extensions are currently focused on manipulating and navigating the contents
of the source editor hence source editor extensions. Xcode 8 even includes a
template to help you get up to speed.
Another benefit extensions have over plugins is security. You can sign and
distribute extensions using your developer account. Apple also mentioned
that you can use the Mac App Store for distributing extensions. This is a great
option if you are interested in making some money with the extensions you
make.
3. Debugging
View Debugging
View debugging is much more powerful in Xcode 8. Reliability has improved
and debugging ambiguous or unsatisfiable layouts is much easier thanks to
an improved view debugger that displays runtime issues.
Runtime issues? That's right. Xcode 8 introduces runtime issues in addition to
buildtime issues. If you run into Auto Layout issues at runtime, Xcode shows
you the issue as a runtime issue in the Issues Navigator on the left. This is a
very welcome addition.
Memory Debugging
Xcode 8 also sports a pretty impressive memory debugger for tracking down
memory leaks and retain cycles.
4. Code Signing
Code signing is a necessary evil for developers interested in Apple's
platforms. Fortunately, Apple isn't burying its head in the sand. Even veterans
are struggling with code signing issues from time to time. During this year's
Platforms State of the Union, Apple even made fun of its own Fix Issue button
that rarely fixed the issue and sometimes made things even worse.
Code signing issues should be a thing of the past with Xcode 8. For every
target, you can check a checkbox that tells Xcode to manage code signing on
your behalf. This option is enabled by default for new projects. When checked,
Xcode manages certificates, provisioning profiles, and application identifiers
for you.
5. Other Improvements and Enhancements
San Francisco Mono
If you enjoy working with beautifully crafted software, then you may enjoy
Apple's new San Francisco Mono font that ships with Xcode 8. It is a
monospaced variant of San Francisco and blends in neatly with the system
font of macOS.
Line Highlighting
Did you notice that the current line is highlighted in the above screenshot?
That is another welcome enhancement Apple added to Xcode 8. I currently
use Backlight for Xcode to achieve the same effect in Xcode 7. I guess I no
longer need that plugin in Xcode 8.
Code Completion for Images
Speaking of ditching third party plugins, I currently use Kent Sutherland's
excellent KSImageNamed plugin to enable code completion for images in
Xcode. I won't be needing that plugin when I switch to Xcode 8 as this feature
is now built into Xcode.
6. Documentation
Developers spend an inordinate amount of time browsing and reading
documentation. Good documentation goes a long way and Apple's
documentation is excellent. Browsing the documentation is a different story.
The new documentation format looks gorgeous and the documentation
browser is fast and easy to use. Apple also consolidated the documentation
for its platforms, resulting in a much smaller memory footprint.
7. Asset Catalogs
Expressive messaging feature support (“Stickers”)
8. Source Control
● Updated version editor:
● – Improved support for unversioned files
● – Change tracking across file renames in Git
● – File renames in navigator correctly renamed in Git
● – Full Unicode support for filenames in Git
● – New diff count and stepper to ease moving through diffs
● – Simplified file listings show changes in both flat and hierarchical views
● Support for Subversion 1.9
● Improved clone performance for large projects in Git when using Xcode Server
● Faster log and blame views
● Faster SCM status for files
9. Storyboards
● New User Interface.
● Connect button action
● Autoresizing be come back
● “Use size classes” -> “Use Trait Variations”
10. When change from Xcode 7.3 to Xcode
8.0
● Can not connect two button to one action function if one in two is created on swift 2.x
and don’t convert current source to swift 3.0
● Error 308: Facebook SDK
11. What’s new in iOS 10?
● Widgets on the Search screen and Home screen.
A widget provides timely, useful information or
app-specific functionality without the need to
open an app. In the past, people added widgets to
Notification Center for quick access. Now, people
add widgets to the Search screen, which is
accessed by swiping to the right on the Home
screen and the Lock screen. You can also show a widget above the quick action
list that appears when people use 3D Touch to press your app icon on the Home
screen. The design and behavior of widgets has also changed. Be sure to review
and update your existing designs accordingly. See Widgets.
● Integration with Messages. Apps can integrate
with Messages by implementing a messaging
extension that appears below a conversation in
Messages and lets people share app-specific
content with friends. Apps can share text,
photos, videos, stickers, and even interactive
content, such as an in-message game. See
Messaging.
● Integration with Siri. Apps can integrate with Siri
and let people use their voice to perform specific
types of app-specific actions, such as making
calls, sending messages, and starting workouts.
See Siri.
● Expanded Notifications. You can enhance
notifications with an expanded detail view that
opens when people use 3D Touch to press your
notification or swipe your notification down on an
unlocked device. Use this view to give people
quick access to more information about a
notification and the ability to take immediate
action without leaving their current context. See
Notifications.
12. What's new in Swift 3.0
12.1. All function parameters have labels unless you
request otherwise
- In Swift 2.x and earlier, method names did not require a label for their
first parameter, so the name of the first parameter was usually built into
the method name. For example:
- Several other basic types of foundation have also dropped the "NS"
prefix, so you'll now see UserDefaults, FileManager, Data, Date, URL
URLRequest, UUID,NotificationCenter and more.
12.2. Omit needless words
- Another huge raft of breaking changes in Swift 3, because it means that
method names that contain self-evident words now have those words
removed.
12.3. UpperCamelCase has been replaced with
lowerCamelCase for enums and properties
- Although syntactically irrelevant, the capital letters we use to name
classes and structs, properties, enums, and more have always followed
a convention fairly closely: classes, structs, and enums use
UpperCamelCase (MyStruct, WeatherType.Cloudy), properties and
parameter names use lowerCamelCase (emailAddress, requestString).
- Example :
● XCPlaygroundPage.currentPage becomes PlaygroundPage.current
● button.setTitle(forState) becomes button.setTitle(for)
● button.addTarget(action, forControlEvents) becomes
button.addTarget(action, for)
● NSBundle.mainBundle() becomes Bundle.main()
● NSData(contentsOfURL) becomes URL(contentsOf)
● NSJSONSerialization.JSONObjectWithData() becomes
JSONSerialization.jsonObject(with)
● UIColor.blueColor() becomes UIColor.blue()
● UIColor.redColor() becomes UIColor.red()
- At the same time enum cases are also changing, moving from
UpperCamelCase to lowerCamelCase. This makes sense: an enum is a
data type (like a struct), but enum values are closer to properties.
However, it does mean that wherever you've used an Apple enum, it will
now be lowercase
- Example :
● .System becomes .system
● .TouchUpInside becomes .touchUpInside
● .FillStroke becomes .fillStroke
● .CGColor becomes .cgColor
12.4. Swifty importing of C functions
- Swift 3 introduces attributes for C functions that allow library authors to
specify new and beautiful ways their code should be imported into Swift.
12.5. Verbs and nouns
● When the operation is naturally described by a verb, use the verb’s
imperative for the mutating method and apply the “ed” or “ing” suffix to
name its nonmutating counterpart.
Mutating Nonmutating
x.sort() z = x.sorted()
x.append(y) z = x.apending(y)
● Prefer to name the nonmutating variant using the verb’spast
participle(usually appending “ed”):
/// Reverses `self` in-place. mutating func reverse()
/// Returns a reversed copy of `self`. func reversed() -> Self ...
x.reverse() let y = x.reversed()
● When adding “ed” is not grammatical because the verb has a direct
object, name the nonmutating variant using the verb’s present
participle, by appending “ing.”
/// Strips all the newlines from `self` mutating func
stripNewlines()
/// Returns a copy of `self` with all the newlines stripped. func
strippingNewlines() -> String ... s.stripNewlines() let oneLine =
t.strippingNewlines()
● When the operation is naturally described by a noun, use the noun for
the nonmutating method and apply the “form” prefix to name its
mutating counterpart.
Nonmutating Mutating
x = y.union(z) y.formUnion(z)
j = c.successor(i) c.formSuccessor(&i)

More Related Content

What's hot

Enterprise connect and_office_editor_release_notes_10.3.1[1]
Enterprise connect and_office_editor_release_notes_10.3.1[1]Enterprise connect and_office_editor_release_notes_10.3.1[1]
Enterprise connect and_office_editor_release_notes_10.3.1[1]
Manoharan Venkidusamy, ITIL-V3
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
homeworkping3
 
I Phone101
I Phone101I Phone101
I Phone101
Febrian ‎
 
Ios actions and outlets
Ios actions and outletsIos actions and outlets
Ios actions and outlets
veeracynixit
 
Android deep dive
Android deep diveAndroid deep dive
Android deep dive
AnuSahniNCI
 
Day 4: Android: UI Widgets
Day 4: Android: UI WidgetsDay 4: Android: UI Widgets
Day 4: Android: UI Widgets
Ahsanul Karim
 
Dbi h315
Dbi h315Dbi h315
Day 15: Working in Background
Day 15: Working in BackgroundDay 15: Working in Background
Day 15: Working in Background
Ahsanul Karim
 
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
John Head
 
Android Workshop: Day 1 Part 3
Android Workshop: Day 1 Part 3Android Workshop: Day 1 Part 3
Android Workshop: Day 1 Part 3
Ahsanul Karim
 
Nitro pro-10
Nitro pro-10Nitro pro-10
Nitro pro-10
jaime rojas
 
Android Services
Android ServicesAndroid Services
Android Services
Ahsanul Karim
 
Jmp205 Final
Jmp205 FinalJmp205 Final
Jmp205 Final
akassabov
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
fantasy zheng
 
iSalesDoc - Make your own sales Apps
iSalesDoc - Make your own sales AppsiSalesDoc - Make your own sales Apps
iSalesDoc - Make your own sales Apps
i2dnetwork
 
Introduction%20of%20android
Introduction%20of%20androidIntroduction%20of%20android
Introduction%20of%20android
Lekha Adhi
 
Titanium Appcelerator - Beginners
Titanium Appcelerator - BeginnersTitanium Appcelerator - Beginners
Titanium Appcelerator - Beginners
Ambarish Hazarnis
 
Installing android sdk on net beans
Installing android sdk on net beansInstalling android sdk on net beans
Installing android sdk on net beans
Aravindharamanan S
 
Day: 2 Environment Setup for Android Application Development
Day: 2 Environment Setup for Android Application DevelopmentDay: 2 Environment Setup for Android Application Development
Day: 2 Environment Setup for Android Application Development
Ahsanul Karim
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
llmeade
 

What's hot (20)

Enterprise connect and_office_editor_release_notes_10.3.1[1]
Enterprise connect and_office_editor_release_notes_10.3.1[1]Enterprise connect and_office_editor_release_notes_10.3.1[1]
Enterprise connect and_office_editor_release_notes_10.3.1[1]
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
 
I Phone101
I Phone101I Phone101
I Phone101
 
Ios actions and outlets
Ios actions and outletsIos actions and outlets
Ios actions and outlets
 
Android deep dive
Android deep diveAndroid deep dive
Android deep dive
 
Day 4: Android: UI Widgets
Day 4: Android: UI WidgetsDay 4: Android: UI Widgets
Day 4: Android: UI Widgets
 
Dbi h315
Dbi h315Dbi h315
Dbi h315
 
Day 15: Working in Background
Day 15: Working in BackgroundDay 15: Working in Background
Day 15: Working in Background
 
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Offic...
 
Android Workshop: Day 1 Part 3
Android Workshop: Day 1 Part 3Android Workshop: Day 1 Part 3
Android Workshop: Day 1 Part 3
 
Nitro pro-10
Nitro pro-10Nitro pro-10
Nitro pro-10
 
Android Services
Android ServicesAndroid Services
Android Services
 
Jmp205 Final
Jmp205 FinalJmp205 Final
Jmp205 Final
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
iSalesDoc - Make your own sales Apps
iSalesDoc - Make your own sales AppsiSalesDoc - Make your own sales Apps
iSalesDoc - Make your own sales Apps
 
Introduction%20of%20android
Introduction%20of%20androidIntroduction%20of%20android
Introduction%20of%20android
 
Titanium Appcelerator - Beginners
Titanium Appcelerator - BeginnersTitanium Appcelerator - Beginners
Titanium Appcelerator - Beginners
 
Installing android sdk on net beans
Installing android sdk on net beansInstalling android sdk on net beans
Installing android sdk on net beans
 
Day: 2 Environment Setup for Android Application Development
Day: 2 Environment Setup for Android Application DevelopmentDay: 2 Environment Setup for Android Application Development
Day: 2 Environment Setup for Android Application Development
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 

Viewers also liked

Plone and Sharepoint
Plone and SharepointPlone and Sharepoint
Plone and Sharepoint
Matt Hamilton
 
BathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - PloneBathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - Plone
Matt Hamilton
 
Adventures in Wonderland - A Plone Developer's Year in iOS
Adventures in Wonderland - A Plone Developer's Year in iOSAdventures in Wonderland - A Plone Developer's Year in iOS
Adventures in Wonderland - A Plone Developer's Year in iOS
Matt Hamilton
 
Open Source, The Natural Fit for Content Management in the Enterprise
Open Source, The Natural Fit for Content Management in the EnterpriseOpen Source, The Natural Fit for Content Management in the Enterprise
Open Source, The Natural Fit for Content Management in the Enterprise
Matt Hamilton
 
How to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication SystemHow to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication System
Matt Hamilton
 
Supercharge Your Career with Open Source
Supercharge Your Career with Open SourceSupercharge Your Career with Open Source
Supercharge Your Career with Open Source
Matt Hamilton
 
A Journey Through Open Source
A Journey Through Open SourceA Journey Through Open Source
A Journey Through Open Source
Matt Hamilton
 
Plone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy GrailPlone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy Grail
Matt Hamilton
 
Plone Intranet talk at Plone Open Garden 2014, Sorrento
Plone Intranet talk at Plone Open Garden 2014, SorrentoPlone Intranet talk at Plone Open Garden 2014, Sorrento
Plone Intranet talk at Plone Open Garden 2014, Sorrento
Matt Hamilton
 
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
Cain Ransbottyn
 
The State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
The State of Sales & Marketing at the 50 Fastest-Growing B2B CompaniesThe State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
The State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
Mattermark
 

Viewers also liked (11)

Plone and Sharepoint
Plone and SharepointPlone and Sharepoint
Plone and Sharepoint
 
BathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - PloneBathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - Plone
 
Adventures in Wonderland - A Plone Developer's Year in iOS
Adventures in Wonderland - A Plone Developer's Year in iOSAdventures in Wonderland - A Plone Developer's Year in iOS
Adventures in Wonderland - A Plone Developer's Year in iOS
 
Open Source, The Natural Fit for Content Management in the Enterprise
Open Source, The Natural Fit for Content Management in the EnterpriseOpen Source, The Natural Fit for Content Management in the Enterprise
Open Source, The Natural Fit for Content Management in the Enterprise
 
How to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication SystemHow to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication System
 
Supercharge Your Career with Open Source
Supercharge Your Career with Open SourceSupercharge Your Career with Open Source
Supercharge Your Career with Open Source
 
A Journey Through Open Source
A Journey Through Open SourceA Journey Through Open Source
A Journey Through Open Source
 
Plone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy GrailPlone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy Grail
 
Plone Intranet talk at Plone Open Garden 2014, Sorrento
Plone Intranet talk at Plone Open Garden 2014, SorrentoPlone Intranet talk at Plone Open Garden 2014, Sorrento
Plone Intranet talk at Plone Open Garden 2014, Sorrento
 
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
Privacy is an Illusion and you’re all losers! - Cryptocow - Infosecurity 2013
 
The State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
The State of Sales & Marketing at the 50 Fastest-Growing B2B CompaniesThe State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
The State of Sales & Marketing at the 50 Fastest-Growing B2B Companies
 

Similar to XCode8.0

Basic iOS Training with SWIFT - Part 4
Basic iOS Training with SWIFT - Part 4Basic iOS Training with SWIFT - Part 4
Basic iOS Training with SWIFT - Part 4
Manoj Ellappan
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage Essay
Liz Sims
 
Android overview
Android overviewAndroid overview
Android overview
Has Taiar
 
Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1
Manoj Ellappan
 
Jmp108
Jmp108Jmp108
Jmp108
John Head
 
Microsoft .NET 6 -What's All About The New Update
Microsoft .NET 6 -What's All About The New UpdateMicrosoft .NET 6 -What's All About The New Update
Microsoft .NET 6 -What's All About The New Update
Adam John
 
Windows 10 update 1809 cfcs oct14 2018
Windows 10 update 1809  cfcs oct14 2018Windows 10 update 1809  cfcs oct14 2018
Windows 10 update 1809 cfcs oct14 2018
hewie
 
Automatic answer checker
Automatic answer checkerAutomatic answer checker
Automatic answer checker
Yesu Raj
 
Angular
AngularAngular
django
djangodjango
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Bill Buchan
 
Top 11 Front-End Web Development Tools To Consider in 2020
 Top 11 Front-End Web Development Tools To Consider in 2020 Top 11 Front-End Web Development Tools To Consider in 2020
Top 11 Front-End Web Development Tools To Consider in 2020
Katy Slemon
 
iPhone application development training day 1
iPhone application development training day 1iPhone application development training day 1
iPhone application development training day 1
Shyamala Prayaga
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
DicodingEvent
 
Top Things to Know about .NET 6
Top Things to Know about .NET 6Top Things to Know about .NET 6
Top Things to Know about .NET 6
BoTree Technologies
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
Paul Jensen
 
RakeshKushwaha
RakeshKushwahaRakeshKushwaha
RakeshKushwaha
Rakesh kumar
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile Controls
Paul Withers
 
Innovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best PracticesInnovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best Practices
Solstice Mobile Argentina
 
AD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesAD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development Futures
Eamon Muldoon
 

Similar to XCode8.0 (20)

Basic iOS Training with SWIFT - Part 4
Basic iOS Training with SWIFT - Part 4Basic iOS Training with SWIFT - Part 4
Basic iOS Training with SWIFT - Part 4
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage Essay
 
Android overview
Android overviewAndroid overview
Android overview
 
Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1
 
Jmp108
Jmp108Jmp108
Jmp108
 
Microsoft .NET 6 -What's All About The New Update
Microsoft .NET 6 -What's All About The New UpdateMicrosoft .NET 6 -What's All About The New Update
Microsoft .NET 6 -What's All About The New Update
 
Windows 10 update 1809 cfcs oct14 2018
Windows 10 update 1809  cfcs oct14 2018Windows 10 update 1809  cfcs oct14 2018
Windows 10 update 1809 cfcs oct14 2018
 
Automatic answer checker
Automatic answer checkerAutomatic answer checker
Automatic answer checker
 
Angular
AngularAngular
Angular
 
django
djangodjango
django
 
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
 
Top 11 Front-End Web Development Tools To Consider in 2020
 Top 11 Front-End Web Development Tools To Consider in 2020 Top 11 Front-End Web Development Tools To Consider in 2020
Top 11 Front-End Web Development Tools To Consider in 2020
 
iPhone application development training day 1
iPhone application development training day 1iPhone application development training day 1
iPhone application development training day 1
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
 
Top Things to Know about .NET 6
Top Things to Know about .NET 6Top Things to Know about .NET 6
Top Things to Know about .NET 6
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
RakeshKushwaha
RakeshKushwahaRakeshKushwaha
RakeshKushwaha
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile Controls
 
Innovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best PracticesInnovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best Practices
 
AD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesAD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development Futures
 

XCode8.0

  • 1. What’s New in Xcode 8.0 Xcode 8 includes overall quality improvements as well as extensive new features. ● Security. Increased Xcode.app security due to runtime library validation ● Readability. New SF Mono font and updated syntax highlighting themes ● Downloading. Smaller download size and faster installation for App Store downloads ● Accessibility. Enhanced accessibility in core Interface Builder workflows, and throughout Xcode ● Usability. Xcode and Interface Builder improvements throughout to increase performance and reduce memory use ● Reference. Faster, more space-efficient, easier-to-read documentation 1. Swift 3.0 Projects created with Xcode 8 use Swift 3 by default. Fortunately, Xcode 8 includes a build setting that gives developers the ability to stick with Swift 2, Swift 2.3 to be precise. This means that you can choose when you want to migrate a project to Swift 3. To configure a target for Swift 2.3, open the target's build settings and set Use Legacy Swift Language Version to Yes. Xcode 8 also includes a migration tool that helps you migrate a project to Swift 3.
  • 2. 2. Source Editor Extensions One of the most surprising features was the introduction of source editor extensions. Developers have been asking for a native plugin architecture for many years. Source editor extensions are a first good step in that direction. There is a lot to like about extensions for Xcode, but Apple emphasizes that extensions are currently focused on manipulating and navigating the contents of the source editor hence source editor extensions. Xcode 8 even includes a template to help you get up to speed. Another benefit extensions have over plugins is security. You can sign and distribute extensions using your developer account. Apple also mentioned that you can use the Mac App Store for distributing extensions. This is a great
  • 3. option if you are interested in making some money with the extensions you make. 3. Debugging View Debugging View debugging is much more powerful in Xcode 8. Reliability has improved and debugging ambiguous or unsatisfiable layouts is much easier thanks to an improved view debugger that displays runtime issues. Runtime issues? That's right. Xcode 8 introduces runtime issues in addition to buildtime issues. If you run into Auto Layout issues at runtime, Xcode shows you the issue as a runtime issue in the Issues Navigator on the left. This is a very welcome addition. Memory Debugging
  • 4. Xcode 8 also sports a pretty impressive memory debugger for tracking down memory leaks and retain cycles. 4. Code Signing
  • 5. Code signing is a necessary evil for developers interested in Apple's platforms. Fortunately, Apple isn't burying its head in the sand. Even veterans are struggling with code signing issues from time to time. During this year's Platforms State of the Union, Apple even made fun of its own Fix Issue button that rarely fixed the issue and sometimes made things even worse. Code signing issues should be a thing of the past with Xcode 8. For every target, you can check a checkbox that tells Xcode to manage code signing on your behalf. This option is enabled by default for new projects. When checked, Xcode manages certificates, provisioning profiles, and application identifiers for you.
  • 6. 5. Other Improvements and Enhancements San Francisco Mono If you enjoy working with beautifully crafted software, then you may enjoy Apple's new San Francisco Mono font that ships with Xcode 8. It is a monospaced variant of San Francisco and blends in neatly with the system font of macOS. Line Highlighting Did you notice that the current line is highlighted in the above screenshot? That is another welcome enhancement Apple added to Xcode 8. I currently use Backlight for Xcode to achieve the same effect in Xcode 7. I guess I no longer need that plugin in Xcode 8.
  • 7. Code Completion for Images Speaking of ditching third party plugins, I currently use Kent Sutherland's excellent KSImageNamed plugin to enable code completion for images in Xcode. I won't be needing that plugin when I switch to Xcode 8 as this feature is now built into Xcode. 6. Documentation Developers spend an inordinate amount of time browsing and reading documentation. Good documentation goes a long way and Apple's documentation is excellent. Browsing the documentation is a different story. The new documentation format looks gorgeous and the documentation browser is fast and easy to use. Apple also consolidated the documentation for its platforms, resulting in a much smaller memory footprint.
  • 8.
  • 9. 7. Asset Catalogs Expressive messaging feature support (“Stickers”)
  • 10. 8. Source Control ● Updated version editor: ● – Improved support for unversioned files ● – Change tracking across file renames in Git ● – File renames in navigator correctly renamed in Git ● – Full Unicode support for filenames in Git ● – New diff count and stepper to ease moving through diffs ● – Simplified file listings show changes in both flat and hierarchical views ● Support for Subversion 1.9 ● Improved clone performance for large projects in Git when using Xcode Server ● Faster log and blame views ● Faster SCM status for files 9. Storyboards ● New User Interface.
  • 11. ● Connect button action ● Autoresizing be come back ● “Use size classes” -> “Use Trait Variations”
  • 12. 10. When change from Xcode 7.3 to Xcode 8.0 ● Can not connect two button to one action function if one in two is created on swift 2.x and don’t convert current source to swift 3.0 ● Error 308: Facebook SDK 11. What’s new in iOS 10? ● Widgets on the Search screen and Home screen. A widget provides timely, useful information or app-specific functionality without the need to open an app. In the past, people added widgets to Notification Center for quick access. Now, people add widgets to the Search screen, which is accessed by swiping to the right on the Home
  • 13. screen and the Lock screen. You can also show a widget above the quick action list that appears when people use 3D Touch to press your app icon on the Home screen. The design and behavior of widgets has also changed. Be sure to review and update your existing designs accordingly. See Widgets. ● Integration with Messages. Apps can integrate with Messages by implementing a messaging extension that appears below a conversation in Messages and lets people share app-specific content with friends. Apps can share text, photos, videos, stickers, and even interactive content, such as an in-message game. See Messaging. ● Integration with Siri. Apps can integrate with Siri and let people use their voice to perform specific types of app-specific actions, such as making calls, sending messages, and starting workouts. See Siri.
  • 14. ● Expanded Notifications. You can enhance notifications with an expanded detail view that opens when people use 3D Touch to press your notification or swipe your notification down on an unlocked device. Use this view to give people quick access to more information about a notification and the ability to take immediate action without leaving their current context. See Notifications.
  • 15. 12. What's new in Swift 3.0 12.1. All function parameters have labels unless you request otherwise - In Swift 2.x and earlier, method names did not require a label for their first parameter, so the name of the first parameter was usually built into the method name. For example: - Several other basic types of foundation have also dropped the "NS" prefix, so you'll now see UserDefaults, FileManager, Data, Date, URL URLRequest, UUID,NotificationCenter and more. 12.2. Omit needless words
  • 16. - Another huge raft of breaking changes in Swift 3, because it means that method names that contain self-evident words now have those words removed. 12.3. UpperCamelCase has been replaced with lowerCamelCase for enums and properties - Although syntactically irrelevant, the capital letters we use to name classes and structs, properties, enums, and more have always followed a convention fairly closely: classes, structs, and enums use UpperCamelCase (MyStruct, WeatherType.Cloudy), properties and parameter names use lowerCamelCase (emailAddress, requestString). - Example : ● XCPlaygroundPage.currentPage becomes PlaygroundPage.current ● button.setTitle(forState) becomes button.setTitle(for)
  • 17. ● button.addTarget(action, forControlEvents) becomes button.addTarget(action, for) ● NSBundle.mainBundle() becomes Bundle.main() ● NSData(contentsOfURL) becomes URL(contentsOf) ● NSJSONSerialization.JSONObjectWithData() becomes JSONSerialization.jsonObject(with) ● UIColor.blueColor() becomes UIColor.blue() ● UIColor.redColor() becomes UIColor.red() - At the same time enum cases are also changing, moving from UpperCamelCase to lowerCamelCase. This makes sense: an enum is a data type (like a struct), but enum values are closer to properties. However, it does mean that wherever you've used an Apple enum, it will now be lowercase - Example : ● .System becomes .system ● .TouchUpInside becomes .touchUpInside ● .FillStroke becomes .fillStroke ● .CGColor becomes .cgColor
  • 18. 12.4. Swifty importing of C functions - Swift 3 introduces attributes for C functions that allow library authors to specify new and beautiful ways their code should be imported into Swift.
  • 19. 12.5. Verbs and nouns ● When the operation is naturally described by a verb, use the verb’s imperative for the mutating method and apply the “ed” or “ing” suffix to name its nonmutating counterpart. Mutating Nonmutating x.sort() z = x.sorted() x.append(y) z = x.apending(y) ● Prefer to name the nonmutating variant using the verb’spast participle(usually appending “ed”): /// Reverses `self` in-place. mutating func reverse() /// Returns a reversed copy of `self`. func reversed() -> Self ... x.reverse() let y = x.reversed() ● When adding “ed” is not grammatical because the verb has a direct object, name the nonmutating variant using the verb’s present participle, by appending “ing.” /// Strips all the newlines from `self` mutating func stripNewlines() /// Returns a copy of `self` with all the newlines stripped. func strippingNewlines() -> String ... s.stripNewlines() let oneLine = t.strippingNewlines() ● When the operation is naturally described by a noun, use the noun for the nonmutating method and apply the “form” prefix to name its mutating counterpart. Nonmutating Mutating x = y.union(z) y.formUnion(z) j = c.successor(i) c.formSuccessor(&i)