This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.

Summary: This document provides information about the extension supporting iOS mobile applications written in Objective-C/C/C++ built with Xcode.

Extension ID

com.castsoftware.cfamily

What's new?

See iOS - Objective-C - 1.6 - Release Notes.

Description

If you have an iOS mobile application written in Objective-C and built with Xcode and you want to view the source code object types and their links with other objects, then you should install this extension. Regarding Front-End to Back-End connections, we support the following cross-technology stacks:

iOS Front-End connected JEE Back-EndiOS Front-End connected Node.js Back-End

How CAST detects XCode projects

The iOS Objective-C extension includes a discoverer that enables Xcode projects to be detected (see com.castsoftware.dmtxcodediscoverer). CAST will search for the project.pbxproj (or a .pbxproj file) - when one is found, the contents are inspected and are used to determine the list of projects present in the root folder.

What are the differences with the extensions for Objective-C and C/C++?

The iOS Objective-C extension supports Objective-C and the com.castsoftware.cpp extension supports C/C++, however, the iOS Objective-C extension has built in support for discovering Xcode projects that are primarily used to build Mobile applications for the iOS Operating System. Therefore, if your project is an Xcode project, you should use the iOS Objective-C extension to take advantage of the built in discovery feature.

Supported Languages

The following languages used to write iOS mobile applications are supported by this extension:

TechnologySupported
Objective-C(tick)
C/C++(tick)
Storyboard/XIB(tick)
Plist

(tick)

When analysing application with mixed code Objective-C/Swift, links will be created between methods from Objective-C and methods from Swift on both directions.

Technology support

VersionSupported
iOS 2/6(error)
iOS 7/10(tick)
iOS 11(tick)
iOS 12(tick)

Supported iOS and third-party frameworks

FrameworkSupported
AVFoundation(tick)
AVKit(tick)
Accelerate(tick)
Accounts(tick)
AdSupport(tick)
AddressBook(tick)
AddressBookUI(tick)
AFNetworking(tick)
AssetsLibrary(tick)
AudioToolbox(tick)
AudioUnit(tick)
AutoLayout(tick)
CFNetwork(tick)
CloudKit(tick)
Contacts(tick)
CoreAudio(tick)
CoreAudioKit(tick)
CoreBluetooth(tick)
CoreData(tick)
CoreFoundation(tick)
CoreGraphics(tick)
CoreImage(tick)
CoreLocation(tick)
CoreMIDI(tick)
CoreMedia(tick)
CoreMotion(tick)
CoreTelephony(tick)
CoreText(tick)
CoreVideo(tick)
EventKit(tick)
EventKitUI(tick)
Facebook(error)
Foundation(tick)
GLKit(tick)
GameController(tick)
GameKit(tick)
GamePlayKit(tick)
HealthKit(tick)
HomeKit(tick)
iAd(tick)
ImageIO(tick)
LocalAuthentication(tick)
Logging(tick)
MapKit(tick)
MediaAccessibility(tick)
MediaPlayer(tick)
MessageUI(tick)
Metal(tick)
MobileCoreServices(tick)
OpenGLES(tick)
QuartzCore(tick)
QuickLook(tick)
SafariServices(tick)
Security(tick)
Social(tick)
Starboard(tick)
StoreKit(tick)
SystemConfiguration(tick)
Twitter(tick)
UIKit(tick)
WebKit(tick)

Function Point, Quality and Sizing support

Function Points
(transactions)
(tick)A green tick indicates that OMG Function Point counting and Transaction Risk Index are supported.
Quality and Sizing(tick)A green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist.

CAST Imaging Core compatibility

ReleaseOperating SystemSupported
8.3.xMicrosoft Windows(tick)

Dependencies with other extensions

Some CAST extensions require the presence of other CAST extensions in order to function correctly. The iOS extension requires that the following other CAST extensions are also installed:

Download and installation instructions

The extension will be automatically installed by CAST Imaging Console.

Source code discovery

A discoverer (see com.castsoftware.dmtxcodediscoverer) is provided with the extension to automatically detect Xcode code: CAST will search for the project.pbxproj (or a .pbxproj file) - when one is found, the contents are inspected and are used to determine the list of projects present in the root folder. For every Xcode project located, one C/C++ Technology Analysis Unit will be created:

Analysis configuration

For each C/C++ Technology Analysis Unit created for an Xcode project discovered by CAST, the following options should be set as shown below:

What results can you expect?

Example project

Objects

C/C++

IconDescription

Additional File

Class

Class Folder

Constructor

Destructor

Directory

Enum

Enum Item

Free Function

Global Variable

Header File

Macro

Member Function

Member Variable

Namespace

Parameter

Root Directory

Source File

Template Class

Template Class Instance

Template Constructor

Template Constructor Instance

Template Free Function

Template Free Function Instance

Template Member Function

Template Member Function Instance

Template Parameter

Template Union

Template Union Instance

Typedef

Union

iOS & Objective-C

IconDescription

Project

Workspace

Source File

Plist File

Story Board File

XIB File

UIApplication Delegate

UIApplication

Interface

Category

Protocol

Class Method

Method / Block

Action

Get Resource Service:

NSURLConnection

NSURLSession

NSURLSessionTask

NSURLSessionDownloadTask

NSURLSessionUploadTaskNSURLSessionDataTask

AFURLSessionManager

AFHTTPSessionManager

UIWebView

Post Resource Service:

NSURLConnection

NSURLSession

NSURLSessionTask

NSURLSessionDownloadTask

NSURLSessionUploadTask

NSURLSessionDataTask

AFURLSessionManager

AFHTTPSessionManager

Put Resource Service:

NSURLConnection

NSURLSession

NSURLSessionTask

NSURLSessionDownloadTask

NSURLSessionUploadTask

NSURLSessionDataTask

AFURLSessionManager

AFHTTPSessionManager

Delete Resource Service:

NSURLConnection

NSURLSession

NSURLSessionTask

NSURLSessionDownloadTask

NSURLSessionUploadTask

NSURLSessionDataTask

AFURLSessionManager

AFHTTPSessionManager

Interface Variable

Outlet

Property

Property Getter

Property Setter

UI Button

UI Control

UI TextField

Tip

If your application is supposed to be communicating with services, ensure you have GET, POST, PUT, DELETE Service objects created after the analysis.

Structural Rules

Known Limitations

  • awakeFromNib() method will be linked to NSObject and not the class instance that overwrites this method.
  • "id" object does not guarantee we could find the real Class object.