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 Posted / iosraj

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.

Is This Answer Correct ?    1 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

Is swift written in c++?

475


What is plist in ios?

508


What do you mean by optional chaining in swift?

481


What is a static variable swift?

472


What are the advantages of using swift for ios development?

499






Is apple using swift?

449


In swift, what type of object are basic data types?

502


What is bridging header in swift?

442


What is swift module?

467


Can structs inherit swift?

528


What is benefit of using higher order functions?

475


How can we make a property optional in swift?

501


Is swift dynamic or static?

431


What is nsmutablearray in swift?

456


Is c++ similar to swift?

480