iOS - Objective-C - 1.6


Extension ID

com.castsoftware.cfamily

What’s new?

See 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-End iOS 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.dmtxcodediscovererexternal link). 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.cppexternal link 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:

Technology Supported
Objective-C
C/C++
Storyboard/XIB
Plist

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

Version Supported
iOS 2/6
iOS 7/10
iOS 11
iOS 12

Supported iOS and third-party frameworks

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

Function Point, Quality and Sizing support

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

Compatibility

Release Operating System Supported
v3/8.4.x Microsoft Windows / Linux
v2/8.3.x Microsoft Windows

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++

Icon Description
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

Icon Description
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

Structural Rules

Release Link
1.6.1 https://technologies.castsoftware.com/AIP/extensions/com.castsoftware.cfamily/versions/1.6.1external link
1.6.0 https://technologies.castsoftware.com/AIP/extensions/com.castsoftware.cfamily/versions/1.6.0external link
1.6.0-funcrel https://technologies.castsoftware.com/AIP/extensions/com.castsoftware.cfamily/versions/1.6.0-funcrelexternal link
1.6.0-beta1 https://technologies.castsoftware.com/AIP/extensions/com.castsoftware.cfamily/versions/1.6.0-beta1external link

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.