Objective-C developer salary August 2017

United States Objective-C developers labor market analysis according to the results of August, 2017
28 August 2017   267

We publish the analysis of the labour market of developers in the United States monthly. For R developers there were 14 vacancies. The vacancy rates were distributed as follows. 

Salary Estimate Objective-C August 2017 Objecrive-C developer salary estimate 

The majority of the developers are required in Sunnyvale, CA; the least in Los Angeles, CA.

Number of vacancies in different cities Objective-C August 2017  Number of Objective-C developer vacancies in different cities 

Among the companies that hire Objective-C developers the leaders are:

  • Sonsoft Inc
  • Axius Technologies
  • Okaya infocom

Number of vacancies in different companies Objective-C August 2017  Number of Objective-C developer vacancies in different companies 

According to the experience required, the vacancies are distributed as follows. However, please, note that there's no data on the number of vacancies by experience level (for senior level) as well as data on salary (for senior and entry levels) of experience as, probably, it is not so popular and only beginners are needed. 

Number of vacancies by experience level Objective-C August 2017  Objective-C developer vacancies by the experience level

The average salary and salary according to the level of experience were distributed as follows.

Average salary Objective-C August 2017  Objective-C developer average salary

The analysis was carried out by the Hype.codes portal method using the indeed.com data.

How to detect an Iphone X programmatically?

Swift and Objective-C developer tutorial on how to detect if an app is running on iPhone X
12 October 2017   3576

If you have an iOS app, now, with release of iPhone X you can face some new issues. In this tutorial, we will show you how to programmatically detect if an application is running on iPhone X.

Unfortunatelly, there is no direct methods on how to solve this issue. But let's use backdoor. Iphone X screen is 1125px X 2436px. So, we can use this information to solve this task.

Swift 3 and upper

if UIDevice().userInterfaceIdiom == .phone {
        switch UIScreen.main.nativeBounds.height {
        case 1136:
            print("iPhone 5 or 5S or 5C")
        case 1334:
            print("iPhone 6/6S/7/8")
        case 2208:
            print("iPhone 6+/6S+/7+/8+")
        case 2436:
            print("iPhone X")
        default:
            print("unknown")
        }
    }

Objective C

    if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone) {

        switch ((int)[[UIScreen mainScreen] nativeBounds].size.height) {

            case 1136:
                printf("iPhone 5 or 5S or 5C");
                break;
            case 1334:
                printf("iPhone 6/6S/7/8");
                break;
            case 2208:
                printf("iPhone 6+/6S+/7+/8+");
                break;
            case 2436:
                printf("iPhone X");
                break;
            default:
                printf("unknown");
        }
    }

or use screenSize.height as float 812.0f not int 812   

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    if (screenSize.height == 812.0f)
        NSLog(@"iPhone X");
}

Notice

DO NOT use the userInterfaceIdiom property to identify the device type, as the apple documentation explains,

For universal applications, you can use this property to tailor the behavior of your application for a specific type of device. For example, iPhone and iPad devices have different screen sizes, so you might want to create different views and controls based on the type of the current device.
 

Apple documentation

This property is just used to identify the running app's view style. However, the iPhone app (not the universal) could be installed in iPad device via App store, in that case, the userInterfaceIdiom will return the UIUserInterfaceIdiomPhone, too.

The right way is to get the machine name via uname.