Flex

AIR Native Extension iOS with ARC -1-

はい!

AIR Native Extensionです。iOSです。
今回はARCを使用します!

こ こを参考にさせて頂きました。

ARCを使うと retain/release/autoreleaseを使わなくても良くなるので、かなり捗ると思います。

XCodeを使用してCocoa Touch Static Libraryを作成します。
Use Automatic Reference Countingのチェックを入れておいて下さい。

サンプルをANE Labさんに コミットしてありますので、参考にして下さい。


使用するFrameworkは
UIKit.framework
Adobe AIR.framework
Foundation.framework
です。


以下 Native部分のコードです。

TestARCLibrary.h
-------------
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "FlashRuntimeExtensions.h"

@interface TestARCLibrary : NSObject

@end
[ EOF ]
-------------

TestARCLibrary.m
-------------
//
//  TestARCLibrary.m
//  TestARCLibrary
//
//  Created by hoehoe on 2012/09/27.
//  Copyright (c) 2012年 hoehoe. All rights reserved.
//

#import "TestARCLibrary.h"

@implementation TestARCLibrary

FREObject getUIControl(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
    FREObject resultObj = NULL;
    
    UIWindow *keyWindow= [[UIApplication sharedApplication] keyWindow];
    UIViewController *mainController = [keyWindow rootViewController];
    
    UISwitch* switchCtrl =[[UISwitch alloc] init];
    switchCtrl.center = CGPointMake(100, 100);
    
    [mainController.view addSubview:switchCtrl];
    
    return resultObj;
}


void contextFinalizer(FREContext ctx)
{
    return;
}

void contextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctions, const FRENamedFunction** functions)
{
    
    *numFunctions = 1;
    FRENamedFunction*  func= (FRENamedFunction*) malloc(sizeof(FRENamedFunction) * (*numFunctions));
    
    func[0].name = (const uint8_t*) "getUIControl";
    func[0].functionData = NULL;
    func[0].function = &getUIControl;
        
    *functions = func;
}

void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer)
{
    *ctxInitializer = &contextInitializer;
    *ctxFinalizer = &contextFinalizer;
}

void finalizer(void** extData)
{
    
}

@end
[ EOF ]
-------------

これをコンパイルすると画面にUISwitchを1個だけ表示するStatic Libraryが作成されます。
とりあえず、ネイティブ部分はここまで。

次回はSWCを作ります。

このページの先頭へ