our web page. In the same time, we adopt Redux, an application architecture, to make our front-end web application more organized and maintainable. Redux provide an single way data flow with a state control center idea, that is, we will maintain all data in a data store with many di↵erent defined states, and by dispatching di↵erent actions to change data state. When data state changed, it will trigger the render component to update the view if necessary. By this way, we will make our data in a single way data flow cycle that can make data more easy to handle its state and trace logic bugs. Besides, to make our experiment results more comprehensive, we use many visualization tool for data presentation and make them more readable and meaningful.
5 Experiment Analysis
5.1 Intro
In this research, we have downloaded around 13000 apps and successfully disassembled around 2200 apps shown in Figure8 available on AppStore, and still downloading currently.
The following statistic results and founds are based on these apps that we successfully processed. We major analysis is on the deprecated usage analysis and golden rules pattern checking, and the data will be present and downloadable on the website AppScan shown in Figure 7 we hosted.
5.2 Usage of Deprecated APIs Result
We use our system to analysis the apps that were successfully disassembled in total, and we successfully analysis 1505 apps shown in Figure 9. In our results, we found that there are 1366 apps have used the deprecated APIs and available for downloading on AppStore.
Further, our analysis results show most of usage of deprecated APIs are distributed in the UIKit, and the Foundation framework, as shown in the Figure 10. The UIKit and Foundation frameworks are very important frameworks in iOS SDK. The UIKit are the abbreviation of User Interface Kit, so the methods under this framework provided are
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Figure 7: Landing page of website AppScan.
Figure 8: Apps we downloaded and disassembled from AppStroe.
‧
related to user interface. It provided to construct and manage an app’s user interface for iOS. Respond to user interactions and system events, access various device features, enable accessibility, and work with animations, text, and images. The Foundation is the base layer of Objective-C classes. In official documentations, says that this framework is designed with several goals :
1. Provide a small set of basic utility classes.
2. Make software development easier by introducing consistent conventions for things such as deallocation.
3. Support Unicode strings, object persistence, and object distribution.
4. Provide a level of OS independence, to enhance portability.
Because the methods provided by these two frameworks are very generally and funda-mentally, we need to go further to find what are the purpose of deprecated methods are using in applications. Then we dig into the classes and that used in theses frameworks as shown in Figure11 and Figure13, besides, we also sort the all the deprecated methods calls in applications, and list the top ten in Figure12. From these distribution charts, we can easily found that the most of uses methods in UIKit are related to the classes of UIAlertView and UIApplication, and we pick some of applications from it, and show the more detail usage in Figure 1415, and 16 for comparing.
The UIAlertView is using to display an alert message to the users, and all this class and the related protocol (such as the UIAlertViewDelegate) were deprecated in iOS 8. To create and manage alerts in iOS 8 and later, instead use UIAlertController with a pre-ferredStyle of alert. The UIApplicatoin class is not a deprecated class like UIAlertView.
It is design to provides a centralized point of control and coordination for apps running in iOS. Almost every app has one instance of UIApplicatoin. When an app is launched, the system will call the UIApplicationMain function and create a singleton UIApplica-tion object and provide mothods for developer can access the object by the class method
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Figure 9: The job progressing of deprecated API usage checking.
”sharedApplication”. However, it also has several outdate methods were marked as dep-recated. From the Figure12, the ”openURL:” and ”setStatusBarHidden:withAnimation:”
are the most uses in this class.
The ”openURL:” is use on open the resource at the specified URL, after deprecated, using the ”openURL:options:completionHandler:” method instead, and the ”setStatus-BarHidden:withAnimation:” can hides or show the status bar, optionally animating the transition, after deprecated in iOS 9, and it can use a property to control the status bar
”prefersStatusBarHidden”, YES if the status bar should be hidden or NO if it should be shown. Although, these user interface related problems can be customized and bypass the problem, for example, we may create a custom view to replace the alert view provided by iOS SDK. However, from this result, most of applications still have the UIAlertView in their application, when it wants to display an alert message to the users, and the situation will face the problem when Apple stop support and remove the method form the iOS SDK in the future.