Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

Xcode

Objective-C から C++ の呼び出し

先日作成した MemStat.hxx を「iOS」−「Single View Application」から利用してみた.
ViewController.m の拡張子を mm に変更.
ボタンと UITextView を貼付けて,変数を定義,ボタンの Action を追加.
以下はそれに対して,C++ の呼出しを加えたコード.


//  ViewController.mm
 
#import “ViewController.h”
#include “MemStat.hxx”   // これでいいの?
 
@interface ViewController ()
 
@end
 
@implementation ViewController
@synthesize TextView;
 
– (void)viewDidLoad
{
  [super viewDidLoad];
  {
    MemoryStatus    ms ;
    NSString*    str = [[NSString alloc]initWithFormat:@”%8.2f MB  /  %8.2f MB \n”,
            ms.GetPhysFree()/1024/1024.,ms.GetPhysTotal()/1024/1024. ] ;
    TextView.text = str ;
    }

  }
– (void)viewDidUnload
{
  [self setTextView:nil];
  [super viewDidUnload];
  }
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
  return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
  }
– (IBAction)Refresh:(id)sender {
  {
    MemoryStatus    ms ;
    NSString*    str = [[NSString alloc]initWithFormat:@”%8.2f MB  /  %8.2f MB \n”,
            ms.GetPhysFree()/1024/1024.,ms.GetPhysTotal()/1024/1024. ] ;
    TextView.text = [TextView.text    stringByAppendingString:str ] ;
    }

  }
@end
 

メモリ状態の画面のコピー

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


Xcode IB

VS のダイアログエディタにあたるのが,InterfaceBuilder と言ったところか?
ClassWizard にあたる操作は,部品を「control」+「クリック」,ViewControler.h へのドロップ.
そうすると,変数の定義(Outlet)や,イベントの動作(Action)の指定のダイアログが表示される.


未だよく理解できてないのが,手動で変数などを追加した場合は?
他にも,メンバ?関数を追加した場合のヘッダでの定義は?

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


MemStat.hxx

Xcode や VC , W Mobile で可能な様にコードを書いてみた.


#ifndef MemStat_hxx
#define MemStat_hxx
//
#ifdef _WIN32
  typedef __int64 i64 ;
  typedef unsigned __int64 ui64 ;
#else
  typedef long long i64 ;
  typedef unsigned long long ui64 ;
#endif
//
#ifdef __APPLE_CC__
  #include <mach/mach.h>
#endif
#ifdef _WIN32
  #include <Windows.h>
  #include <WinBase.h>
#endif
//
class MemoryStatus {
public:

} ;
//

{
  P_Free = P_Total = 0 ;
  #ifdef __APPLE_CC__
  {
    unsigned int count = 0 ;
    mach_port_t host_port = ::mach_host_self() ;
    host_basic_info_data_t hb_info;
    {
      count = HOST_BASIC_INFO_COUNT ;
      ::host_info(host_port,HOST_BASIC_INFO,(host_info_t)&hb_info,&count) ;
      }
    vm_statistics_data_t vm_info;
    {
      count = HOST_VM_INFO_COUNT;
      ::host_statistics(host_port,HOST_VM_INFO,(host_info_t)&vm_info,&count) ;
      }
    P_Free = vm_info.free_count * vm_page_size ;
    P_Total = hb_info.max_mem ;
    }
  #endif
  #ifdef _WIN32
  #if !defined(_WIN32_WCE) && (_MFC_VER >= 0x700)
  {
    MEMORYSTATUSEX memStat ;
    memset(&memStat,0,sizeof(MEMORYSTATUSEX)) ;
    memStat.dwLength= sizeof(MEMORYSTATUSEX) ;
    ::GlobalMemoryStatusEx(&memStat) ;
    P_Free = memStat.ullAvailPhys ;
    P_Total = memStat.ullTotalPhys ;
    }
  #else
  {
    MEMORYSTATUS memStat ;
    memset(&memStat,0,sizeof(MEMORYSTATUS)) ;
    memStat.dwLength= sizeof(MEMORYSTATUS) ;
    ::GlobalMemoryStatus(&memStat) ;
    P_Free = memStat.dwAvailPhys ;
    P_Total = memStat.dwTotalPhys ;
    }
  #endif
  #endif
  }
//
#endif


ファイルは,UTF-8 と言うか,シフトJIS の設定で,7 bit の範囲の文字のみ使用.
改行は,CR+LF としている.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ


Xcode 4.3.2

日本語に翻訳されたiOSのドキュメント
初めての iOS アプリケーション


ここを参考にサンプルを書いていて,

「View」ー「Utilities」ー「Show Object Library」 VC 6 などのコントロールにあたる
「View」ー「Utilities」ー「Show Attribute Inspector」 コントロールのプロパティ

Xcode の設定で,
「Xcode」ー「Preferences…」ー「Text Editing」ー「Indentation」ー「Prefer Indent using」を「Tabs」に.


Class Wizard にあたる部分の使い方がまだよくわからない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。