Walkthrough: Binding an ios Objective-C Library

Size: px
Start display at page:

Download "Walkthrough: Binding an ios Objective-C Library"

Transcription

1 Walkthrough: Binding an ios Objective-C Library Binding an existing ios Objective-C Library with Objective Sharpie Overview When working on ios, you might encounter cases where you want to consume a third-party Objective-C library. In those situations, you can use a Xamarin.iOS Binding Project to create a C# binding that will allow you to consume the library in your Xamarin.iOS applications. Generally in the ios ecosystem you can find libraries in 3 flavors: As a precompiled static library file with.a extension together with its header(s) (.h files). For example, Google s Analytics Library As a precompiled Framework. This is just a folder containing the static library, headers and sometimes additional resources with.framework extension. For example, Google s AdMob Library. As just source code files. For example, a library containing just.m and.h Objective C files. In the first and second scenario there will already be a precompiled CocoaTouch Static Library so in this article we will focus on the third scenario. Remember, before you start to create a binding, always check the licence provided with the library to ensure that you are free to bind it. This article provides a step-by-step walkthrough of creating a binding project using the open source InfColorPicker Objective-C project as an example, however all information in this guide can be adapted for use with any third-party Objective-C library. The InfColorPicker library provides a reusable view controller that allows the user to select a color based on its HSB representation, making color selection more user-friendly.

2 We'll cover all the necessary steps to consume this particular Objective-C API in Xamarin.iOS: First, we'll create an Objective-C static library using Xcode. Then, we'll bind this static library with Xamarin.iOS. Next, show how Objective Sharpie can reduce the workload by automatically generating some (but not all) of the necessary API definitions required by the Xamarin.iOS binding. Finally, we'll create a Xamarin.iOS application that uses the binding. The sample application will demonstrate how to use a strong delegate for communication between the InfColorPicker API and our C# code. After we've seen how to use a strong delegate, we'll cover how to use weak delegates to perform the same tasks. Requirements This article assumes that you have some familiarity with Xcode and the Objective-C language and you have read our Binding Objective-C documentation. Additionally, the following is required to complete the steps presented: Xcode 7 and ios - Apple's Xcode 7 and the latest ios API need to be installed and configured on the developer's computer. Xcode Command Line Tools - The Xcode Command Line Tools must be installed for the currently installed version of Xcode (see below for installation details). Xamarin Studio or Visual Studio - The latest version of Xamarin Studio or Visual Studio should be installed and configured on the development computer. An Apple Mac is required for developing a Xamarin.iOS application, and when using Visual Studio you must be connected to a Xamarin.iOS build host The latest version of Objective Sharpie - A current copy of the Objective Sharpie tool downloaded from here. If you already have Objective Sharpie installed, you can update it to the latest version by using the sharpie update Installing the Xcode Command Line Tools As stated above, we'll be using Xcode Command Line Tools (specifically make and lipo) in this walkthrough. The make command is a very common Unix utility that will automate the compilation of executable programs and libraries by using a makefile that specifies how the program should be built. The lipo command is an OS X command line utility for creating multi-architecture files; it will combine multiple.a files into one file that can be used by all hardware architectures. As stated above, we'll be using Xcode Command Line Tools on the Mac Build Host (specifically make and lipo) in this walkthrough. The make command is a very common Unix utility that will automate the compilation of executable programs and libraries by using a makefile to specifies how to build the program. The lipo command is an OS X command line utility for creating multi-architecture files; it will combine multiple.a files into one file that can be used by all hardware architectures. According to Apple's Building from the Command Line with Xcode FAQ documentation, in OS X 10.9 and greater, the Downloads pane of Xcode Preferences dialog not longer supports the downloading command-line tools. You'll need to use one of the following methods to install the tools: Install Xcode 6 (or greater) - When you install Xcode 6 or greater, it comes bundled with all your command-line tools. In OS X 10.9 shims (installed in /usr/bin), can map any tool included in /usr/bin to the corresponding tool inside Xcode. For

3 example, the xcrun command, which allows you to find or run any tool inside Xcode from the command line. The Terminal Application - From the Terminal application, you can install the command line tools by running the xcodeselect --install command: Start the Terminal Application. Type xcode-select --install and press Enter, for example: Europa:~ kmullins$ xcode-select --install You'll be asked to install the command line tools, click the Install button: The tools will be downloaded and installed from Apple's servers: Downloads for Apple Developers - The Command Line Tools package is available the Downloads for Apple Developers web page. Log in with your Apple ID, then search for and download the Command Line Tools: With the Command Line Tools installed, we're ready to continue on with the walkthrough. Walkthrough

4 In this walkthrough, we'll cover the following steps: Create a Static Library - This step involves creating a static library of the InfColorPicker Objective-C code. The static library will have the.a file extension, and will be embedded into the.net assembly of the library project. Create a Xamarin.iOS Binding Project - Once we have a static library, we will use it to create a Xamarin.iOS binding project. The binding project consists of the static library we just created and metadata in the form of C# code that explains how the Objective-C API can be used. This metadata is commonly referred to as the API definitions. We'll use Objective Sharpie to help us with create the API definitions. Normalize the API Definitions - Objective Sharpie does a great job of helping us, but it can't do everything. We'll discuss some changes that we need to make to the API definitions before they can be used. Use the Binding Library - Finally, we'll create a Xamarin.iOS application to show how to use our newly created binding project. Now that we understand what steps are involved, let's move on to the rest of the walkthrough. Creating A Static Library If we inspect the code for InfColorPicker in Github: On our Mac Build Host, if we inspect the code for InfColorPicker in Github: We can see the following three directories in the project: InfColorPicker - This directory contains the Objective-C code for the project. PickerSamplePad - This directory contains a sample ipad project. PickerSamplePhone - This directory contains a sample iphone project. Let's download the InfColorPicker project from GitHub and unzip it in the directory of our choosing. Opening up the Xcode target for PickerSamplePhone project, we see the following project structure in the Xcode Navigator:

5 This project achieves code reuse by directly adding the InfColorPicker source code (in the red box) into each sample project. The code for the sample project is inside the blue box. Because this particular project does not provide us with a static library, it is necessary for us create an Xcode project to compile the static library. The first step is for us to add the InfoColorPicker source code into the Static Library. To achieve this let's do the following: 1. Start Xcode. 2. From the File menu select New > Project...: 3. Select Framework & Library, the Cocoa Touch Static Library template and click the Next button:

6 4. Enter InfColorPicker for the Project Name and click the Next button: 5. Select a location to save the project and click the OK button. 6. Now we need to add the source from the InfColorPicker project to our static library project. Because the InfColorPicker.h file already exists in our static library (by default), Xcode will not allow us to overwrite it. From the Finder, navigate to the InfColorPicker source code in the original project that we unzipped from GitHub, copy all of the InfColorPicker files and paste them into our new static library project: 7. Return to Xcode, right click on the InfColorPicker folder and select Add files to "InfColorPicker...":

7 8. From the Add Files dialog box, navigate to the InfColorPicker source code files that we just copied, select them all and click the Add button: 9. The source code will be copied into our project:

8 10. From the Xcode Project Navigator, select the InfColorPicker.m file and comment out the last two lines (because of the way this library was written, this file is not used): 11. We now need to check if there are any Frameworks required by the library. You can find this information either in the README, or by opening one of the sample projects provided. This example uses Foundation.framework, UIKit.framework, and CoreGraphics.framework so let's add them. 12. Select the InfColorPicker target > Build Phases and expand the Link Binary With Libraries section:

9 13. Use the + button to open the dialog allowing you to add the required frames frameworks listed above: 14. The Link Binary With Libraries section should now look like the image below: At this point we're close, but we're not quite done. The static library has been created, but we need to build it to create a Fat binary that includes all of the required architectures for both ios device and ios simulator. Creating a Fat Binary All ios devices have processors powered by ARM architecture that have developed over time. Each new architecture added new instructions and other improvements while still maintaining backwards compatibility. On ios devices we have armv6, armv7, armv7s, arm64 instruction sets although we no longer use armv6. The ios simulator is not powered by ARM and is istead a x86 and

10 x86_64 powered simulator. We that means for us is that we must provide libraries on each instruction sets. A Fat library is.a file containing all the supported architectures. Creating a fat binary is a three step process: Compile an ARM 7 & ARM64 version of the static library. Compile an x86 and x84_64 version of the static library. Use the lipo command line tool to combine the two static libraries into one. While these three steps are rather straightforward, and it may be necessary to repeat them in the future when the Objective-C library receives updates or if we require bug fixes. If you decide to automate these steps, it will simplify the future maintenance and support of the ios binding project. There are many tools available to automate such tasks - a shell script, rake, xbuild, and make. When we installed the Xcode Command Line tools, we also installed make, so that is the build system that will be used for this walkthrough. Here is a Makefile that you can use to create a multi-architecture shared library that will work on an ios device and the simulator for the any library: XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild PROJECT_ROOT=./YOUR-PROJECT-NAME PROJECT=$(PROJECT_ROOT)/YOUR-PROJECT-NAME.xcodeproj TARGET=YOUR-PROJECT-NAME all: lib$(target).a lib$(target)-i386.a: $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@ lib$(target)-armv7.a: $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@ lib$(target)-arm64.a: $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@ lib$(target).a: lib$(target)-i386.a lib$(target)-armv7.a lib$(target)-arm64.a xcrun -sdk iphoneos lipo -create -output $@ $^ clean: -rm -f *.a *.dll Enter the Makefile commands in the plain text editor of your choosing, and update the sections with YOUR-PROJECT-NAME with the name of your project. It is also important to ensure that we you paste the instructions above, that the tabs within the instructions have been preserved.

11 Save the file with the name Makefile to the same location as the InfColorPicker Xcode Static Library we created above: Open the Terminal Application on your Mac and navigate to the location of your Makefile. Type make into the Terminal, press Enter and the Makefile will be executed: When you run make, you will see a lot of text scrolling by. If everything worked correctly, you'll see the words BUILD SUCCEEDED and the libinfcolorpicker-armv7.a, libinfcolorpicker-i386.a and libinfcolorpickersdk.a files will be copied to the same location as the Makefile: You can confirm the architectures within your Fat binary by using the following command: xcrun -sdk iphoneos lipo -info libinfcolorpicker.a This should display the following: Architectures in the fat file: libinfcolorpicker.a are: i386 armv7 x86_64 arm64 At this point, we've completed the first step of our ios binding by creating a static library using Xcode and the Xcode Command Line tools make and lipo. Let's move to the next step and use Objective-Sharpie to automate the creation of the API bindings for us.

12 Create a Xamarin.iOS Binding Project Before we can use Objective-Sharpie to automate the binding process, we need to create a Xamarin.iOS Binding Project to house the API Definitions (that we'll be using Objective-Sharpie to help us build) and create the C# binding for us. Let's do the following: 1. Start Xamarin Studio. 2. From the File menu, select New > Solution...: 3. From the New Solution dialog box, select Library > ios Binding Project: 4. Click the Next button. 5. Enter InfColorPickerBinding as the Project Name and click the Create button to create the solution:

13 The solution will be created and two default files will be included: 1. Start Visual Studio. 2. From the File menu, select New > Project...:

14 3. From the New Project dialog box, select ios > Bindings Library: 4. Enter InfColorPickerBinding as the Name and click the OK button to create the solution. The solution will be created and two default files will be included: ApiDefinition.cs - This file will contain the contracts that define how Objective-C API's will be wrapped in C#. Structs.cs - This file will hold any structures or enumeration values that are required by the interfaces and delegates.

15 We'll be working with these two files later in the walkthrough. First, we need to add the InfColorPicker library to the binding project. Including the Static Library in the Binding Project Now we have our base Binding Project ready, we need to add the Fat Binary library we created above for the InfColorPicker library. Let's do the following: 1. Right-click on the Native References folder in the Solution Pad and select Add Native References: 2. Navigate to the Fat Binary we made earlier (libinfcolorpickersdk.a) and press the Open button: 3. The file will be included in the project:

16 1. Right-click on the InfColorPicker project in the Solution Explorer and select Add > Existing Item...: 2. Copy the libinfcolorpickersdk.a from your Mac Build Host and paste it into your binding project. 3. Navigate to the libinfcolorpickersdk.a and press the Add button:

17 4. The file will be included in the project. When the.a file is added to the project, Xamarin.iOS will automatically set the Build Action of the file to ObjcBindingNativeLibrary, and create a special file called libinfcolorpickersdk.linkwith.cs. This file contains the LinkWith attribute that tells Xamarin.iOS how handle the static library that we just added. The contents of this file are shown in the following code snippet: using ObjCRuntime; [assembly: LinkWith ("libinfcolorpickersdk.a", SmartLink = true, ForceLoad = true)] The LinkWith attribute identifies the static library for the project and some important linker flags. The next thing we need to do is to create the API definitions for the InfColorPicker project. For the purposes of this walkthrough, we will use Objective Sharpie to generate the file ApiDefinition.cs. Using Objective Sharpie Objective Sharpie is a command line tool (provided by Xamarin) that can assist in creating the definitions required to bind a 3rd party Objective-C library to C#. In this section, we'll use Objective Sharpie to create the initial ApiDefinition.cs for the InfColorPicker project. Objective Sharpie is a command line tool (provided by Xamarin) that can assist in creating the definitions required to bind a 3rd party Objective-C library to C#. In this section, we'll use Objective Sharpie on our Mac Build Host to create the initial ApiDefinition.cs for the InfColorPicker project. To get started, let's download Objective Sharpie installer file as detailed in this guide. Run the installer and follow all of the onscreen prompts from the install wizard to install Objective Sharpie on our development computer. After we have Objective Sharpie successfully installed, let's start the Terminal app and enter the following command to get help on all of the tools that it provides to assist in binding: sharpie -help If we execute the above command, the following output will be generated: Europa:Resources kmullins$ sharpie -help usage: sharpie [OPTIONS] TOOL [TOOL_OPTIONS] Options: -h, --helpshow detailed help -v, --versionshow version information Available Tools: xcode Get information about Xcode installations and available SDKs. bind Create a Xamarin C# binding to Objective-C APIs

18 Europa:Resources kmullins$ For the purpose of this walkthrough, we will be using the following Objective Sharpie tools: xcode - This tools gives us information about our current Xcode install and the versions of ios and Mac APIs that we have installed. We will be using this information later when we generate our bindings. bind - We'll use this tool to parse the.h files in the InfColorPicker project into the initial ApiDefinition.cs and StructsAndEnums.cs files. To get help on a specific Objective Sharpie tool, enter the name of the tool and the -help option. For example, sharpie xcode - help returns the following output: Europa:Resources kmullins$ sharpie xcode -help usage: sharpie xcode [OPTIONS]+ Options: -h, --help -v, --verbose --sdks Europa:Resources kmullins$ Show detailed help Be verbose with output List all available Xcode SDKs. Pass -verbose for more details. Before we can start the binding process, we need to get information about our current installed SDKs by entering the following command into the Terminal sharpie xcode -sdks: amyb:desktop amyb$ sharpie xcode -sdks sdk: appletvos9.2 arch: arm64 sdk: iphoneos9.3 arch: arm64 armv7 sdk: macosx10.11 arch: x86_64 i386 sdk: watchos2.2 arch: armv7 From the above, we can see that we have the iphoneos8.1 SDK installed on our machine. With this information in place, we are ready to parse the InfColorPicker project.h files into the initial ApiDefinition.cs and StructsAndEnums.cs for the InfColorPicker project. Enter the following command in the the Terminal app: sharpie bind --output=infcolorpicker --namespace=infcolorpicker --sdk=[iphone-os] [full-path-toproject]/infcolorpicker/infcolorpicker/*.h Where [full-path-to-project] is the full path to the directory where the InfColorPicker Xcode project file is located on our computer, and [iphone-os] is the ios SDK that we have installed, as noted by the sharpie xcode -sdks command. Note that in this example we've passed *.h as a parameter, which includes all the header files in this directory - normally you should NOT do this, but instead carefully read through the header files to find the top-level.h file that references all the other relevant files, and just pass that to Objective Sharpie. The following output will be generated in the terminal: Europa:Resources kmullins$ sharpie bind -output InfColorPicker -namespace InfColorPicker -sdk iphoneos8.1 /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPicker.h -unified Compiler configuration:

19 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=8.1 -resource-dir /Library/Frameworks/ObjectiveSharpie.framework/Versions/1.1.1/clang-resources -arch armv7 -ObjC [ 0%] parsing /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPicker.h In file included from /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPicker.h:60: /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPickerController.h:28:1: warning: no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed (nonatomic) UIColor* sourcecolor; ^ /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPickerController.h:28:1: warning: default property attribute 'assign' not appropriate for non-gc object [-Wobjc-property-no-attribute] /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPickerController.h:29:1: warning: no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed (nonatomic) UIColor* resultcolor; ^ /Users/kmullins/Projects/InfColorPicker/InfColorPicker/InfColorPickerController.h:29:1: warning: default property attribute 'assign' not appropriate for non-gc object [-Wobjc-property-no-attribute] 4 warnings generated. [100%] parsing complete [bind] InfColorPicker.cs Europa:Resources kmullins$ And the InfColorPicker.enums.cs and InfColorPicker.cs files will be created in our directory: Open both of these files in our Xamarin Studio Binding project that we created above. Copy the contents of the InfColorPicker.cs file and paste it into the ApiDefinition.cs file, replacing the existing namespace... code block with the contents of the InfColorPicker.cs file (leaving the using statements intact):

20 Open both of these files in our Visual Studio Binding project that we created above. Copy the contents of the InfColorPicker.cs file (from the Mac Build Host) and paste it into the ApiDefinition.cs file, replacing the existing namespace... code block with the contents of the InfColorPicker.cs file (leaving the using statements intact). Normalize the API Definitions Objective Sharpie sometimes has an issue translating Delegates, so we will need to modify the definition of the InfColorPickerControllerDelegate interface and replace the [Protocol, Model] line with the following: [BaseType(typeof(NSObject))] [Model] So that the definition looks like: Next, we do the same thing with the contents of the InfColorPicker.enums.cs file, copying and pasting them in the StructsAndEnums.cs file leaving the using statements intact: You may also find that Objective Sharpie has annotated the binding with [Verify] attributes. These attributes indicate that you should verify that Objective Sharpie did the correct thing by comparing the binding with the original C/Objective-C declaration (which will be provided in a comment above the bound declaration). Once you have verified the bindings, you should remove the verify attribute. For more information, refer to the Verify guide. At this point, our binding project should be complete and ready to build. Let's build our binding project and make sure that we ended up with no errors:

21 At this point, our binding project should be complete and ready to build. Let's build our binding project and make sure that we ended up with no errors. Using the Binding We should now have a working Xamarin.iOS Binding Library project for the Objective-C InfColorPicker library. Let's create a sample iphone application to use this binding. 1. Create Xamarin.iOS Project - Add a new Xamarin.iOS project called InfColorPickerSample to the solution, as shown in the following screenshots:

22 2. Add Reference to the Binding Project - Update the InfColorPickerSample project so that it has a reference to the InfColorPickerBinding project: 3. Create the iphone User Interface - Double click on the MainStoryboard.storyboard file in the InfColorPickerSample project to edit it in the ios Designer. Add a Button to the view and call it ChangeColorButton, as shown in the following: 4. Add the InfColorPickerView.xib - The InfColorPicker Objective-C library includes a.xib file. Xamarin.iOS will not include this.xib in the binding project, which will cause run-time errors in our sample application. The workaround for this is to add the.xib file to our Xamarin.iOS project. Select the Xamarin.iOS project, right-click and select Add > Add Files, and add the.xib file as shown in the following screenshot:

23 5. When asked, copy the.xib file into the project. 1. Create Xamarin.iOS Project - Add a new Xamarin.iOS project called InfColorPickerSample to the solution, as shown in the following screenshot: 2. Add Reference to the Binding Project - Update the InfColorPickerSample project so that it has a reference to the InfColorPickerBinding project:

24 3. Create the iphone User Interface - Double click on the MainStoryboard.storyboard file in the InfColorPickerSample project to edit it in the ios Designer. Add a Button to the view and call it ChangeColorButton, as shown in the following: 4. Add the InfColorPickerView.xib - The InfColorPicker Objective-C library includes a.xib file. Xamarin.iOS will not include this.xib in the binding project, which will cause run-time errors in our sample application. The workaround for this is to add the.xib file to our Xamarin.iOS project from our Mac Build Host. Select the Xamarin.iOS project, right-click and select Add > Existing Item..., and add the.xib file. Next, let's take a quick look at Protocols in Objective-C and how we handle them in binding and C# code. Protocols and Xamarin.iOS In Objective-C, a protocol defines methods (or messages) that can be used in certain circumstances. Conceptually, they are very similar to interfaces in C#. One major difference between an Objective-C protocol and a C# interface is that protocols can have optional methods - methods that a class does not have to implement. Objective-C uses keyword is used to indicate which methods are optional. For more information on protocols see Events, Protocols and Delegates. InfColorPickerController has one such protocol, shown in the code snippet - (void) colorpickercontrollerdidfinish: (InfColorPickerController*) controller; // This is only called when the color picker is presented modally. - (void) colorpickercontrollerdidchangecolor: (InfColorPickerController*) This protocol is used by InfColorPickerController to inform clients that the user has picked a new color and that the

25 InfColorPickerController is finished. Objective Sharpie mapped this protocol as shown in the following code snippet: [BaseType(typeof(NSObject))] [Model] public partial interface InfColorPickerControllerDelegate { [Export ("colorpickercontrollerdidfinish:")] void ColorPickerControllerDidFinish (InfColorPickerController controller); } [Export ("colorpickercontrollerdidchangecolor:")] void ColorPickerControllerDidChangeColor (InfColorPickerController controller); When the binding library is compiled, Xamarin.iOS will create an abstract base class called InfColorPickerControllerDelegate, which implements this interface with virtual methods. There are two ways that we can implement this interface in a Xamarin.iOS application: Strong Delegate - Using a strong delegate involves creating a C# class that subclasses InfColorPickerControllerDelegate and overrides the appropriate methods. InfColorPickerController will use an instance of this class to communicate with its clients. Weak Delegate - A weak delegate is a slightly different technique that involves creating a public method on some class (such as InfColorPickerSampleViewController) and then exposing that method to the InfColorPickerDelegate protocol via an Export attribute. Strong delegates provide Intellisense, type safety, and better encapsulation. For these reasons, you should use strong delegates where you can, instead of a weak delegate. In this walkthrough we will discuss both techniques. Let's start with implementing a strong delegate, and then move on to cover how to implement a weak delegate. Implementing a Strong Delegate Let's finish up our Xamarin.iOS application by using a strong delegate to respond to the colorpickercontrollerdidfinish: message: Subclass InfColorPickerControllerDelegate - In this step we will add a new class to the project called ColorSelectedDelegate. Edit the class so that it has the following code: using InfColorPickerBinding; using UIKit; namespace InfColorPickerSample { public class ColorSelectedDelegate:InfColorPickerControllerDelegate { readonly UIViewController parent; public ColorSelectedDelegate (UIViewController parent) {

26 } this.parent = parent; } } public override void ColorPickerControllerDidFinish (InfColorPickerController controller) { parent.view.backgroundcolor = controller.resultcolor; parent.dismissviewcontroller (false, null); } Xamarin.iOS will bind the Objective-C delegate by creating an abstract base class called InfColorPickerControllerDelegate. We subclass this type and override the ColorPickerControllerDidFinish method to access the value of the ResultColor property of InfColorPickerController. Create a instance of ColorSelectedDelegate - Our event handler will need an instance of the ColorSelectedDelegate type that we created in the previous step. Edit the class InfColorPickerSampleViewController and add the following instance variable to the class: ColorSelectedDelegate selector; Initialize the ColorSelectedDelegate variable - To ensure that selector is a valid instance, update the method ViewDidLoad in ViewController to match the following snippet: public override void ViewDidLoad () { base.viewdidload (); ChangeColorButton.TouchUpInside += HandleTouchUpInsideWithStrongDelegate; selector = new ColorSelectedDelegate (this); } Implement the method HandleTouchUpInsideWithStrongDelegate - Next we need to implement the event handler for when the user touches ColorChangeButton. Edit ViewController, and add the following method: using InfColorPicker;... private void HandleTouchUpInsideWithStrongDelegate (object sender, EventArgs e) { InfColorPickerController picker = InfColorPickerController.ColorPickerViewController(); picker.delegate = selector; picker.presentmodallyoverviewcontroller (this); } We first obtain an instance of InfColorPickerController via a static method, and make that instance aware of our strong delegate via the property InfColorPickerController.Delegate. This property was automatically generated for us by Objective Sharpie. Finally we call PresentModallyOverViewController to show the view InfColorPickerSampleViewController.xib so that the user may select a color.

27 Run the Application - At this point we're done with all of our code. If you run the application, you should be able to change the background color of the InfColorColorPickerSampleView as shown in the following screenshots: Congratulations! At this point you've successfully created and bound an Objective-C library for use in a Xamarin.iOS application. Next, let's learn about using weak delegates. Implementing a Weak Delegate Instead of subclassing a class bound to the Objective-C protocol for a particular delegate, Xamarin.iOS also lets you implement the protocol methods in any class that derives from NSObject, decorating your methods with the ExportAttribute, and then supplying the appropriate selectors. When you take this approach, you assign an instance of your class to the WeakDelegate property instead of to the Delegate property. A weak delegate offers you the flexibility to take your delegate class down a different inheritance hierarchy. Let s see how to implement and use a weak delegate in our Xamarin.iOS application. Create Event Handler for TouchUpInside - Let's create a new event handler for the TouchUpInside event of the Change Background Color button. This handler will fill the same role as the HandleTouchUpInsideWithStrongDelegate handler that we created in the previous section, but will use a weak delegate instead of a strong delegate. Edit the class ViewController, and add the following method: private void HandleTouchUpInsideWithWeakDelegate (object sender, EventArgs e) { InfColorPickerController picker = InfColorPickerController.ColorPickerViewController(); picker.weakdelegate = this; picker.sourcecolor = this.view.backgroundcolor; picker.presentmodallyoverviewcontroller (this);

28 } Update ViewDidLoad - We must change ViewDidLoad so that it uses the event handler that we just created. Edit ViewController and change ViewDidLoad to resemble the following code snippet: public override void ViewDidLoad () { base.viewdidload (); ChangeColorButton.TouchUpInside += HandleTouchUpInsideWithWeakDelegate; } Handle the colorpickercontrollerdidfinish: Message - When the ViewController is finished, ios will send the message colorpickercontrollerdidfinish: to the WeakDelegate. We need to create a C# method that can handle this message. To do this, we create a C# method and then adorn it with the ExportAttribute. Edit ViewController, and add the following method to the class: [Export("colorPickerControllerDidFinish:")] public void ColorPickerControllerDidFinish (InfColorPickerController controller) { View.BackgroundColor = controller.resultcolor; DismissViewController (false, null); } Run the application. It should now behave exactly as it did before, but it's using a weak delegate instead of the strong delegate. At this point you've successfully completed this walkthrough. You should now have an understanding of how to create and consume a Xamarin.iOS binding project. Summary This article walked through the process of creating and using a Xamarin.iOS binding project. First we discussed how to compile an existing Objective-C library into a static library. Then we covered how to create a Xamarin.iOS binding project, and how to use Objective Sharpie to generate the API definitions for the Objective-C library. We discussed how to update and tweak the generated API definitions to make them suitable for public consumption. After the Xamarin.iOS binding project was finished, we moved on to consuming that binding in a Xamarin.iOS application, with a focus on using strong delegates and weak delegates.

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 Questions? Announcements Assignment #1 due this evening by 11:59pm Remember, if you wish to use a free late you must email me before

More information

Registering for the Apple Developer Program

Registering for the Apple Developer Program It isn t necessary to be a member of the Apple Developer Program if you don t intend to submit apps to the App Stores, or don t need the cloud-dependent features. We strongly recommend joining, though,

More information

The MVC Design Pattern

The MVC Design Pattern The MVC Design Pattern The structure of iphone applications is based on the Model-View-Controller (MVC) design pattern because it benefits object-oriented programs in several ways. MVC based programs tend

More information

Architecting ios Project. Massimo Oliviero

Architecting ios Project. Massimo Oliviero Architecting ios Project Massimo Oliviero Massimo Oliviero Freelance Software Developer web http://www.massimooliviero.net email massimo.oliviero@gmail.com slide http://www.slideshare.net/massimooliviero

More information

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney 1 Build Your First App The way to get started is to quit talking and begin doing. Walt Disney Copyright 2015 AppCoda Limited All rights reserved. Please do not distribute or share without permission. No

More information

Object-Oriented Programming in Objective-C

Object-Oriented Programming in Objective-C In order to build the powerful, complex, and attractive apps that people want today, you need more complex tools than a keyboard and an empty file. In this section, you visit some of the concepts behind

More information

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC IBM Case Manager Mobile Version 1.0.0.5 SDK for ios Developers' Guide IBM SC27-4582-04 This edition applies to version 1.0.0.5 of IBM Case Manager Mobile (product number 5725-W63) and to all subsequent

More information

Principles of Programming Languages. Objective-C. Joris Kluivers

Principles of Programming Languages. Objective-C. Joris Kluivers Principles of Programming Languages Objective-C Joris Kluivers joris.kluivers@gmail.com History... 3 NeXT... 3 Language Syntax... 4 Defining a new class... 4 Object identifiers... 5 Sending messages...

More information

Open the solution in Xamarin Studio. Notice that the Xamarin project already has the Xamarin Test Cloud Agent installed via NuGet.

Open the solution in Xamarin Studio. Notice that the Xamarin project already has the Xamarin Test Cloud Agent installed via NuGet. Calabash Quickstart for Xamarin.iOS Overview In this quick start we'll add a Calabash feature to a Xamarin.iOS application and run the test locally and in Xamarin Test Cloud. The test will confirm that

More information

Ocean Wizards and Developers Tools in Visual Studio

Ocean Wizards and Developers Tools in Visual Studio Ocean Wizards and Developers Tools in Visual Studio For Geoscientists and Software Developers Published by Schlumberger Information Solutions, 5599 San Felipe, Houston Texas 77056 Copyright Notice Copyright

More information

Xamarin. MS (IT), 4 th Sem. HOD, Dept. Of IT, HOW DOES XAMARIN WORKS?

Xamarin. MS (IT), 4 th Sem. HOD, Dept. Of IT, HOW DOES XAMARIN WORKS? Xamarin Mandanna B J MS (IT), 4 th Sem Jain University, Bangalore Dr. Suchitra R HOD, Dept. Of IT, Jain University Bangalore Abstract:- It is a technology that brings.net/c# to Android, IOS as well as

More information

Topics in Mobile Computing

Topics in Mobile Computing Topics in Mobile Computing Workshop 1I - ios Fundamental Prepared by Y.H. KWOK What is ios? From Wikipedia (http://en.wikipedia.org/wiki/ios): ios is an operating system for iphone, ipad and Apple TV.

More information

About Xcode and iphone SDK

About Xcode and iphone SDK apple About Xcode and iphone SDK iphone SDK and Xcode 3.1.2 developer tools for iphone OS 2.2 Contents Introduction Compatibility with Mac OS X Versions What's New Installation Deprecation Notice Introduction

More information

iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department

iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department pmadden@acm.org http://optimal.cs.binghamton.edu General Outline Overview of the tools, and where to get more information

More information

HPE AppPulse Mobile. Software Version: 2.1. Adding AppPulse Mobile to Your ios App

HPE AppPulse Mobile. Software Version: 2.1. Adding AppPulse Mobile to Your ios App HPE AppPulse Mobile Software Version: 2.1 Adding AppPulse Mobile to Your ios App Document Release Date: November 2015 Contents How to Add HP AppPulse Mobile to Your ios App 3 Advanced Options 7 Crash Stack

More information

Opening Microsoft Visual Studio. On Microsoft Windows Vista and XP to open the visual studio do the following:

Opening Microsoft Visual Studio. On Microsoft Windows Vista and XP to open the visual studio do the following: If you are a beginner on Microsoft Visual Studio 2008 then you will at first find that this powerful program is not that easy to use for a beginner this is the aim of this tutorial. I hope that it helps

More information

HOW TO BUILD A CUSTOM CONTROL IN XAMARIN.FORMS

HOW TO BUILD A CUSTOM CONTROL IN XAMARIN.FORMS Filling the Gaps: HOW TO BUILD A CUSTOM CONTROL IN XAMARIN.FORMS KELLEY RICKER Abstract Xamarin.Forms provides a flexible, code-once option for developers to create native mobile apps, and it provides

More information

My First iphone App. 1. Tutorial Overview

My First iphone App. 1. Tutorial Overview My First iphone App 1. Tutorial Overview In this tutorial, you re going to create a very simple application on the iphone or ipod Touch. It has a text field, a label, and a button. You can type your name

More information

My First iphone App (for Xcode version 6.4)

My First iphone App (for Xcode version 6.4) My First iphone App (for Xcode version 6.4) 1. Tutorial Overview In this tutorial, you re going to create a very simple application on the iphone or ipod Touch. It has a text field, a label, and a button

More information

Visual Basic.NET for Xamarin using Portable Class Libraries

Visual Basic.NET for Xamarin using Portable Class Libraries Portable Visual Basic.NET Visual Basic.NET for Xamarin using Portable Class Libraries Overview In this guide we re going to walk through creating a new Visual Basic class library in Visual Studio as a

More information

Using Doxygen to Create Xcode Documentation Sets

Using Doxygen to Create Xcode Documentation Sets Using Doxygen to Create Xcode Documentation Sets Documentation sets (doc sets) provide a convenient way for an Xcode developer to search API and conceptual documentation (including guides, tutorials, TechNotes,

More information

Objective-C: An Introduction (pt 1) Tennessee Valley Apple Developers Saturday CodeJam July 24, 2010 August 7, 2010

Objective-C: An Introduction (pt 1) Tennessee Valley Apple Developers Saturday CodeJam July 24, 2010 August 7, 2010 Objective-C: An Introduction (pt 1) Tennessee Valley Apple Developers Saturday CodeJam July 24, 2010 August 7, 2010 What is Objective-C? Objective-C is an object-oriented programming language that adds

More information

JUCE TUTORIALS. INTRO methodology how to create a GUI APP and how to create a Plugin.

JUCE TUTORIALS. INTRO methodology how to create a GUI APP and how to create a Plugin. JUCE TUTORIALS INTRO methodology how to create a GUI APP and how to create a Plugin. Install Juice and Xcode (or other IDE) Create a project: GUI Application Select platform Choose Path, Name, Folder Name

More information

User Experience: Windows & Views

User Experience: Windows & Views View Controller Programming Guide for ios User Experience: Windows & Views 2011-01-07 Apple Inc. 2011 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval

More information

Switch What s New in Switch New features. Fixes and improvements. Date: March 22, 2018 What s New In Switch 2018

Switch What s New in Switch New features. Fixes and improvements. Date: March 22, 2018 What s New In Switch 2018 Date: March 22, 2018 What s New In Switch 2018 Enfocus BVBA Kortrijksesteenweg 1095 9051 Gent Belgium +32 (0)9 216 98 01 info@enfocus.com Switch 2018 What s New in Switch 2018. This document lists all

More information

Xcode Release Notes. Apple offers a number of resources where you can get Xcode development support:

Xcode Release Notes. Apple offers a number of resources where you can get Xcode development support: Xcode Release Notes This document contains release notes for Xcode 5 developer preview 5. It discusses new features and issues present in Xcode 5 developer preview 5 and issues resolved from earlier Xcode

More information

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode Objectives Register for an Apple account Create an application using Xcode Test your application with the iphone simulator Import certificates for development Build your application to the device Expand

More information

AdFalcon ios SDK Developer's Guide. AdFalcon Mobile Ad Network Product of Noqoush Mobile Media Group

AdFalcon ios SDK Developer's Guide. AdFalcon Mobile Ad Network Product of Noqoush Mobile Media Group AdFalcon ios SDK 4.1.0 Developer's Guide AdFalcon Mobile Ad Network Product of Noqoush Mobile Media Group Table of Contents 1 Introduction... 3 Prerequisites... 3 2 Install AdFalcon SDK... 4 2.1 Use CocoaPods

More information

It is necessary to follow all of the sections below in the presented order. Skipping steps may prevent subsequent sections from working correctly.

It is necessary to follow all of the sections below in the presented order. Skipping steps may prevent subsequent sections from working correctly. The following example demonstrates how to create a basic custom module, including all steps required to create Installation packages for the module. You can use the packages to distribute the module to

More information

CS193P: HelloPoly Walkthrough

CS193P: HelloPoly Walkthrough CS193P: HelloPoly Walkthrough Overview The goal of this walkthrough is to give you a fairly step by step path through building a simple Cocoa Touch application. You are encouraged to follow the walkthrough,

More information

This guide illustrates how to set up an Apple device for deployment, and deploy an application. It covers how to:

This guide illustrates how to set up an Apple device for deployment, and deploy an application. It covers how to: Device Provisioning Overview Before you can deploy your application to a device, you need to have an active subscription with the Apple Developer Program. Visit the Apple Developer Portal to get registered.

More information

EL-USB-RT API Guide V1.0

EL-USB-RT API Guide V1.0 EL-USB-RT API Guide V1.0 Contents 1 Introduction 2 C++ Sample Dialog Application 3 C++ Sample Observer Pattern Application 4 C# Sample Application 4.1 Capturing USB Device Connect \ Disconnect Events 5

More information

Introduction to Mobile Development

Introduction to Mobile Development Introduction to Mobile Development Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store all done

More information

Richard Mallion. Swift for Admins #TEAMSWIFT

Richard Mallion. Swift for Admins #TEAMSWIFT Richard Mallion Swift for Admins #TEAMSWIFT Apple Introduces Swift At the WWDC 2014 Keynote, Apple introduced Swift A new modern programming language It targets the frameworks for Cocoa and Cocoa Touch

More information

Xcode Release Notes. Apple offers a number of resources where you can get Xcode development support:

Xcode Release Notes. Apple offers a number of resources where you can get Xcode development support: Xcode Release Notes This document contains release notes for Xcode 5 developer preview 4. It discusses new features and issues present in Xcode 5 developer preview 4 and issues resolved from earlier Xcode

More information

Application Deployment System Guide Version 8.0 October 14, 2013

Application Deployment System Guide Version 8.0 October 14, 2013 Application Deployment System Guide Version 8.0 October 14, 2013 For the most recent version of this document, visit our developer's website. Table of Contents 1 Application Deployment System 4 1.1 System

More information

Building Mapping Apps for ios With Swift

Building Mapping Apps for ios With Swift Building Mapping Apps for ios With Swift Jeff Linwood This book is for sale at http://leanpub.com/buildingmappingappsforioswithswift This version was published on 2017-09-09 This is a Leanpub book. Leanpub

More information

Stream iphone Sensor Data to Adafruit IO

Stream iphone Sensor Data to Adafruit IO Stream iphone Sensor Data to Adafruit IO Created by Trevor Beaton Last updated on 2019-01-22 04:07:41 PM UTC Guide Contents Guide Contents Overview In this learn guide we will: Before we start... Downloading

More information

Unit 10. Linux Operating System

Unit 10. Linux Operating System 1 Unit 10 Linux Operating System 2 Linux Based on the Unix operating system Developed as an open-source ("free") alternative by Linux Torvalds and several others starting in 1991 Originally only for Intel

More information

Upgrading Applications

Upgrading Applications C0561587x.fm Page 77 Thursday, November 15, 2001 2:37 PM Part II Upgrading Applications 5 Your First Upgrade 79 6 Common Tasks in Visual Basic.NET 101 7 Upgrading Wizard Ins and Outs 117 8 Errors, Warnings,

More information

Hello guys, In this tutorial, I am going to tell you that how we can integrate a custom framework in our Xcode project using cocoa pods.

Hello guys, In this tutorial, I am going to tell you that how we can integrate a custom framework in our Xcode project using cocoa pods. Hello guys, In this tutorial, I am going to tell you that how we can integrate a custom framework in our Xcode project using cocoa pods. Things we need to do this tutorial are: Macbook or system that supports

More information

Xamarin for C# Developers

Xamarin for C# Developers Telephone: 0208 942 5724 Email: info@aspecttraining.co.uk YOUR COURSE, YOUR WAY - MORE EFFECTIVE IT TRAINING Xamarin for C# Developers Duration: 5 days Overview: C# is one of the most popular development

More information

Structuring an App Copyright 2013 Apple Inc. All Rights Reserved.

Structuring an App Copyright 2013 Apple Inc. All Rights Reserved. Structuring an App App Development Process (page 30) Designing a User Interface (page 36) Defining the Interaction (page 42) Tutorial: Storyboards (page 47) 29 App Development Process Although the task

More information

Learn to make desktop LE

Learn to make desktop LE HACKING WITH SWIFT COMPLETE TUTORIAL COURSE Learn to make desktop LE P apps with real-worldam S Swift projects REEPaul Hudson F Project 1 Storm Viewer Get started coding in Swift by making an image viewer

More information

My First Cocoa Program

My First Cocoa Program My First Cocoa Program 1. Tutorial Overview In this tutorial, you re going to create a very simple Cocoa application for the Mac. Unlike a line-command program, a Cocoa program uses a graphical window

More information

Building an Android* command-line application using the NDK build tools

Building an Android* command-line application using the NDK build tools Building an Android* command-line application using the NDK build tools Introduction Libraries and test apps are often written in C/C++ for testing hardware and software features on Windows*. When these

More information

Participant Handbook

Participant Handbook Participant Handbook Table of Contents 1. Create a Mobile application using the Azure App Services (Mobile App). a. Introduction to Mobile App, documentation and learning materials. b. Steps for creating

More information

HKUST. CSIT 6910A Report. iband - Musical Instrument App on Mobile Devices. Student: QIAN Li. Supervisor: Prof. David Rossiter

HKUST. CSIT 6910A Report. iband - Musical Instrument App on Mobile Devices. Student: QIAN Li. Supervisor: Prof. David Rossiter HKUST CSIT 6910A Report Student: Supervisor: Prof. David Rossiter Table of Contents I. Introduction 1 1.1 Overview 1 1.2 Objective 1 II. Preparation 2 2.1 ios SDK & Xcode IDE 2 2.2 Wireless LAN Network

More information

Xton Access Manager GETTING STARTED GUIDE

Xton Access Manager GETTING STARTED GUIDE Xton Access Manager GETTING STARTED GUIDE XTON TECHNOLOGIES, LLC PHILADELPHIA Copyright 2017. Xton Technologies LLC. Contents Introduction... 2 Technical Support... 2 What is Xton Access Manager?... 3

More information

ios Core Data Example Application

ios Core Data Example Application ios Core Data Example Application The Core Data framework provides an abstract, object oriented interface to database storage within ios applications. This does not require extensive knowledge of database

More information

Steps to Set Up the Environment of Xamarin in Visual

Steps to Set Up the Environment of Xamarin in Visual Before a couple of years ago many people were on the thinking line that Native Languages like Objective-C, Swift and Java is the only choice to develop native Mobile Applications. Well gone are those days

More information

ITP 342 Mobile App Dev. Delegates

ITP 342 Mobile App Dev. Delegates ITP 342 Mobile App Dev Delegates Protocol A protocol is a declaration of a list of methods Classes that conform to the protocol implement those methods A protocol can declare two kinds of methods: required

More information

Developing Desktop Apps for Ultrabook Devices in Windows 8*: Getting Started

Developing Desktop Apps for Ultrabook Devices in Windows 8*: Getting Started Developing Desktop Apps for Ultrabook Devices in Windows 8*: Getting Started By Paul Ferrill The Ultrabook provides a rich set of sensor capabilities to enhance a wide range of applications. It also includes

More information

Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17

Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17 Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17 Table of Contents Introduction... 3 Getting Ready... 3 Step 1: Installing Bonjour... 5 Step 2: Installing Homebridge and the HCA Plugin...

More information

COMS W4172 : 3D User Interfaces Spring 2017 Prof. Steven Feiner Date out: January 26, 2017 Date due: January 31, 2017

COMS W4172 : 3D User Interfaces Spring 2017 Prof. Steven Feiner Date out: January 26, 2017 Date due: January 31, 2017 COMS W4172 : 3D User Interfaces Spring 2017 Prof. Steven Feiner Date out: January 26, 2017 Date due: January 31, 2017 Assignment 0.5: Installing and Testing Your Android or ios Development Environment

More information

CS193P - Lecture 11. iphone Application Development. Text Input Presenting Content Modally

CS193P - Lecture 11. iphone Application Development. Text Input Presenting Content Modally CS193P - Lecture 11 iphone Application Development Text Input Presenting Content Modally Announcements Presence 3 assignment has been posted, due Tuesday 5/12 Final project proposals due on Monday 5/11

More information

Akamai Bot Manager. Android and ios BMP SDK

Akamai Bot Manager. Android and ios BMP SDK Akamai Bot Manager Android and ios BMP SDK Prabha Kaliyamoorthy January, 2018 Contents Bot Manager SDK 4 Identifying Protected Endpoints 5 Identifying the App OS and Version in the user-agent 5 Request

More information

Use the API or contact customer service to provide us with the following: General ios Android App Name (friendly one-word name)

Use the API or contact customer service to provide us with the following: General ios Android App Name (friendly one-word name) Oplytic Attribution V 1.2.0 December 2017 Oplytic provides attribution for app-to-app and mobile-web-to-app mobile marketing. Oplytic leverages the tracking provided by Universal Links (ios) and App Links

More information

Mac App Store Manual Location Lion Installer

Mac App Store Manual Location Lion Installer Mac App Store Manual Location Lion Installer Gatekeeper is a new feature in Mountain Lion and OS X Lion v10.7.5 that The safest and most reliable place to download and install apps is via the Mac App Store.

More information

1.1 Why Foxit MobilePDF SDK is your choice Foxit MobilePDF SDK Key Features of Foxit PDF SDK for UWP Evaluation...

1.1 Why Foxit MobilePDF SDK is your choice Foxit MobilePDF SDK Key Features of Foxit PDF SDK for UWP Evaluation... TABLE OF CONTENTS 1 Introduction to Foxit MobilePDF SDK...1 1.1 Why Foxit MobilePDF SDK is your choice... 1 1.2 Foxit MobilePDF SDK... 2 1.3 Key Features of Foxit PDF SDK for UWP... 3 1.4 Evaluation...

More information

Tutorial on Basic Android Setup

Tutorial on Basic Android Setup Tutorial on Basic Android Setup EE368/CS232 Digital Image Processing, Spring 2015 Linux Version Introduction In this tutorial, we will learn how to set up the Android software development environment and

More information

Cocoa. Last Week... Music 3SI: Introduction to Audio/Multimedia App. Programming. Today... Why Cocoa? Wikipedia - Cocoa

Cocoa. Last Week... Music 3SI: Introduction to Audio/Multimedia App. Programming. Today... Why Cocoa? Wikipedia - Cocoa Music 3SI: Introduction to Audio/Multimedia App. Programming IDE (briefly) VST Plug-in Assignment 1 hints Last Week... Week #5-5/5/2006 CCRMA, Department of Music Stanford University 1 2 Today... Cocoa

More information

Using the VMware vcenter Orchestrator Client. vrealize Orchestrator 5.5.1

Using the VMware vcenter Orchestrator Client. vrealize Orchestrator 5.5.1 Using the VMware vcenter Orchestrator Client vrealize Orchestrator 5.5.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments

More information

First, let's make sure we have all of the starter code downloaded. MAC (Go to the second part of the tutorial if you are using windows)

First, let's make sure we have all of the starter code downloaded. MAC (Go to the second part of the tutorial if you are using windows) CSE 167 HW 0 - Due Thur. Jan 18th at 11:59 p.m. This homework will help you set up OpenGL on your computer. First, let's make sure we have all of the starter code downloaded. https://github.com/ht413/cse167startercode

More information

Platform SDK Deployment Guide. Platform SDK 8.1.2

Platform SDK Deployment Guide. Platform SDK 8.1.2 Platform SDK Deployment Guide Platform SDK 8.1.2 1/1/2018 Table of Contents Overview 3 New in this Release 4 Planning Your Platform SDK Deployment 6 Installing Platform SDK 8 Verifying Deployment 10 Overview

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Xcode Encountered An Internal Logic Error >>>CLICK HERE<<<

Xcode Encountered An Internal Logic Error >>>CLICK HERE<<< Xcode Encountered An Internal Logic Error Choose Continue The biggest problem is that "XCODE" doesn't run and give the following error: Xcode encountered an internal logic error. Choose "Continue" to continue

More information

Manual Xcode Ios 5 Simulator Black Screen >>>CLICK HERE<<<

Manual Xcode Ios 5 Simulator Black Screen >>>CLICK HERE<<< Manual Xcode Ios 5 Simulator Black Screen Jayprakash Dubey Nov 12 '14 at 5:10 Only ios 7.0 and later simulators are supported on Xcode 6.0.x and 6.1.x. Xcode 6.0.1 - ios Simulator Black Screen. It either

More information

Integrated Software Environment. Part 2

Integrated Software Environment. Part 2 Integrated Software Environment Part 2 Operating Systems An operating system is the most important software that runs on a computer. It manages the computer's memory, processes, and all of its software

More information

App Development. Quick Guides for Masterminds. J.D Gauchat Cover Illustration by Patrice Garden

App Development. Quick Guides for Masterminds. J.D Gauchat   Cover Illustration by Patrice Garden App Development Quick Guides for Masterminds J.D Gauchat www.jdgauchat.com Cover Illustration by Patrice Garden www.smartcreativz.com Quick Guides for Masterminds Copyright 2018 by John D Gauchat All Rights

More information

Designing iphone Applications

Designing iphone Applications Designing iphone Applications 4 Two Flavors of Mail 5 Organizing Content 6 Organizing Content 6 Organizing Content 6 Organizing Content 6 Organizing Content Focus on your user s data 6 Organizing Content

More information

ENCM 339 Fall 2017: Editing and Running Programs in the Lab

ENCM 339 Fall 2017: Editing and Running Programs in the Lab page 1 of 8 ENCM 339 Fall 2017: Editing and Running Programs in the Lab Steve Norman Department of Electrical & Computer Engineering University of Calgary September 2017 Introduction This document is a

More information

Unit 13. Linux Operating System Debugging Programs

Unit 13. Linux Operating System Debugging Programs 1 Unit 13 Linux Operating System Debugging Programs COMPILATION 2 3 Editors "Real" developers use editors designed for writing code No word processors!! You need a text editor to write your code Eclipse,

More information

Xcode 6 Start to Finish

Xcode 6 Start to Finish Xcode 6 Start to Finish ios and OS X Development Fritz Anderson VAddison-Wesley New York Boston Indianapolis San Francisco Toronto Montreal Capetown Sydney London Munich Paris Madrid Tokyo Singapore Mexico

More information

Last Updated: FRC 2019 BETA

Last Updated: FRC 2019 BETA Last Updated: 08-01-2018 FRC 2019 BETA Table of Contents VS Code (C++/Java IDE)...3 Alpha Test Info...4 Installing VS Code...5 VS Code Basics and WPILib in VS Code... 15 Creating a new WPILib project in

More information

ios Embedded Deployment

ios Embedded Deployment Table of Contents ios Embedded Deployment Overview... 2 Getting Started...3 Trying it out... 4 Using an existing Xcode project...5 Limitations...7 Change Logs and History... 8 Embedded Engine Change History...8

More information

How to build MPTK with CMake SUMMARY

How to build MPTK with CMake SUMMARY How to build MPTK with CMake SUMMARY Read this document to learn how to build the Matching Pursuit Tool Kit on Win32 platform using CMake and Visual Studio LAYOUT 1Getting Started...2 1.1Required tools...2

More information

Using the GCC toolchain for Mulle SW development.

Using the GCC toolchain for Mulle SW development. Using the GCC toolchain for Mulle SW development. Tested on Windows XP and Mac OS X Snow Leopard 2011 Eistec AB All rights reserved. Subject to change without prior notice. Document version 4.00 1 ENVIRONMENT

More information

Managing your content with the Adobe Experience Manager Template Editor. Gabriel Walt Product Manager twitter.com/gabrielwalt

Managing your content with the Adobe Experience Manager Template Editor. Gabriel Walt Product Manager twitter.com/gabrielwalt Managing your content with the Adobe Experience Manager Template Editor Gabriel Walt Product Manager twitter.com/gabrielwalt Table of Contents 1. Introduction 3 1.1 Overview 3 1.2 Prerequisites 3 2. Getting

More information

Application Development in ios 7

Application Development in ios 7 Application Development in ios 7 Kyle Begeman Chapter No. 1 "Xcode 5 A Developer's Ultimate Tool" In this package, you will find: A Biography of the author of the book A preview chapter from the book,

More information

Authoring Playground Books with Bluefruit for ios

Authoring Playground Books with Bluefruit for ios Authoring Playground Books with Bluefruit for ios Created by Trevor Beaton Last updated on 2018-08-22 04:04:08 PM UTC Guide Contents Guide Contents Overview What you should know before beginning: To create

More information

Welcome to Kmax Installing Kmax

Welcome to Kmax Installing Kmax Welcome to Kmax 10.2 Kmax is a cross-platform, Java-based application that will run on Windows, Linux, or Mac OS X. This distribution of Kmax replaces all previous releases except for Kmax on Mac OS X

More information

CircuitPython with Jupyter Notebooks

CircuitPython with Jupyter Notebooks CircuitPython with Jupyter Notebooks Created by Brent Rubell Last updated on 2018-08-22 04:08:47 PM UTC Guide Contents Guide Contents Overview What's a Jupyter Notebook? The Jupyter Notebook is an open-source

More information

Enterprise Registry Repository

Enterprise Registry Repository BEAAquaLogic Enterprise Registry Repository Exchange Utility Version 3.0 Revised: February 2008 Contents 1. Getting Started With the ALRR Exchange Utility What is the ALRR Exchange Utility?.......................................

More information

Google Maps Troubleshooting

Google Maps Troubleshooting Google Maps Troubleshooting Before you go through the troubleshooting guide below, make sure that you ve consulted the class FAQ, Google s Map Activity Tutorial, as well as these helpful resources from

More information

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Introduction History, Characteristics of Java language Java Language Basics Data types, Variables, Operators and Expressions Anatomy of a Java Program

More information

MS_40541 Build Native Cross-Platform Mobile Apps with a Shared C# Business Logic for ios, Android, and UWP in C#.NET with Xamarin and Visual Studio

MS_40541 Build Native Cross-Platform Mobile Apps with a Shared C# Business Logic for ios, Android, and UWP in C#.NET with Xamarin and Visual Studio Build Native Cross-Platform Mobile Apps with a Shared C# Business Logic for ios, Android, and UWP in C#.NET with Xamarin and Visual Studio www.ked.com.mx Av. Revolución No. 374 Col. San Pedro de los Pinos,

More information

GETTING STARTED WITH THE ADOBE INDESIGN CS3 PLUG-IN EDITOR

GETTING STARTED WITH THE ADOBE INDESIGN CS3 PLUG-IN EDITOR GETTING STARTED WITH THE ADOBE INDESIGN CS3 PLUG-IN EDITOR 2007 Adobe Systems Incorporated. All rights reserved. Getting Started with the Adobe InDesign CS3 Plug-in Editor Technical note #10123 Adobe,

More information

DB2 for z/os Stored Procedure support in Data Server Manager

DB2 for z/os Stored Procedure support in Data Server Manager DB2 for z/os Stored Procedure support in Data Server Manager This short tutorial walks you step-by-step, through a scenario where a DB2 for z/os application developer creates a query, explains and tunes

More information

CS193p Spring 2010 Wednesday, March 31, 2010

CS193p Spring 2010 Wednesday, March 31, 2010 CS193p Spring 2010 Logistics Lectures Building 260 (History Corner) Room 034 Monday & Wednesday 4:15pm - 5:30pm Office Hours TBD Homework 7 Weekly Assignments Assigned on Wednesdays (often will be multiweek

More information

Developing with VMware vcenter Orchestrator. vrealize Orchestrator 5.5.1

Developing with VMware vcenter Orchestrator. vrealize Orchestrator 5.5.1 Developing with VMware vcenter Orchestrator vrealize Orchestrator 5.5.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments

More information

Developing Applications for ios

Developing Applications for ios Developing Applications for ios Lab 2: RPN Calculator App (1 of 3) Radu Ionescu raducu.ionescu@gmail.com Faculty of Mathematics and Computer Science University of Bucharest Task 1 Task: Create a new application

More information

In the first class, you'll learn how to create a simple single-view app, following a 3-step process:

In the first class, you'll learn how to create a simple single-view app, following a 3-step process: Class 1 In the first class, you'll learn how to create a simple single-view app, following a 3-step process: 1. Design the app's user interface (UI) in Xcode's storyboard. 2. Open the assistant editor,

More information

This walkthrough assumes you have completed the Getting Started walkthrough and the first lift and shift walkthrough.

This walkthrough assumes you have completed the Getting Started walkthrough and the first lift and shift walkthrough. Azure Developer Immersion In this walkthrough, you are going to put the web API presented by the rgroup app into an Azure API App. Doing this will enable the use of an authentication model which can support

More information

Function. Description

Function. Description Function Check In Get / Checkout Description Checking in a file uploads the file from the user s hard drive into the vault and creates a new file version with any changes to the file that have been saved.

More information

SUBSCRIBING TO ICAL FEEDS

SUBSCRIBING TO ICAL FEEDS SUBSCRIBING TO ICAL FEEDS INSTRUCTIONS OUTLOOK 2007/2010/2013 GOOGLE CALENDAR APPLE IPHONE 4 (OR LATER) IPAD GENERAL INFORMATION WHAT IS AN ICAL FEED? icalendar (ical) format is a standard for calendar

More information

Client Edition. Instructions for Use

Client Edition. Instructions for Use Client Edition Instructions for Use 2017 leanedit LLC 1 www.leanedit.com TABLE OF CONTENTS 1. Uploading a Video Page 4 2. Labeling a Video Page 5 3. Creating a Project Page 6 4. Editing a Video Page 8

More information

Developing Applications for ios

Developing Applications for ios Developing Applications for ios Lecture 1: Mobile Applications Development Radu Ionescu raducu.ionescu@gmail.com Faculty of Mathematics and Computer Science University of Bucharest Evaluation Individual

More information

ITP 342 Mobile App Dev. Table Views

ITP 342 Mobile App Dev. Table Views ITP 342 Mobile App Dev Table Views Tables A table presents data as a scrolling, singlecolumn list of rows that can be divided into sections or groups. Use a table to display large or small amounts of information

More information

CST8152 Compilers Creating a C Language Console Project with Microsoft Visual Studio.Net 2003

CST8152 Compilers Creating a C Language Console Project with Microsoft Visual Studio.Net 2003 CST8152 Compilers Creating a C Language Console Project with Microsoft Visual Studio.Net 2003 The process of creating a project with Microsoft Visual Studio 2003.Net is to some extend similar to the process

More information