Keyword

Result: 4 questions

When this code is executed, what is the value of the swift string?

import Foundation
let ns = NSString("Hello")
let swift = String(ns)

Answer:

Correct answer: This code will not compile.

Explanation: While it is possible to typecast an NSString into a String using an initializer without a label, it is not possible the other way around. The code should read let ns = NSString(string: "Hello").

View

What output will be produced by the code below?

let string: String = String(describing: String.self)
print(string)

Correct answer: "String".

Explanation: Among the many constructors for strings is one that lets you pass in a class to have the string set to the name of that class. That is, String(describing: String.self) means "create a string out of the name of the String class." This is equivalent to the NSStringFromClass() function that Objective-C developers often use.

 

View

When this code is executed, what is the value of the swift string?

import Foundation
let ns = NSString("Hello")
let swift = String(ns)
Quiz

Swift defines the AnyObject type alias to represent instances of any reference type, and it’s internally defined as a protocol.

Consider the following code:

var array = [AnyObject]()
struct Test {}
array.append(Test())

This code generates a compilation error, with the following error message:

Type 'Test' does not conform to protocol 'AnyObject'

The failure is obvious because a struct is a value and not a reference type, and as such it doesn’t implement and cannot be cast to the AnyObject protocol.

Now consider the following code:

var array = [AnyObject]()
array.append(1)
array.append(2.0)
array.append("3")
array.append([4, 5, 6])
array.append([7: "7", 8: "8"])

struct Test {}
array.append(Test())

The array array is filled in with values of type respectively int, double, string, array and dictionary. All of them are value types and not reference types, and in all cases no error is reported by the compiler. Why?

Answer:

The reason is that swift automatically bridges:

  • number types to NSNumber
  • strings to NSString
  • arrays to NSArray
  • dictionaries to NSDictionary

which are all reference types.

View

© 2017 QuizBucket.org