タグ別アーカイブ: Objective-C

Objective-Cでの静的なメンバ変数について

CATEGORIES iPhone, 北海道ラボby.a.takeuchi5 Comments2010.11.01

Objective-Cでのstaticなメンバ変数について、ちょっと困ったので使い方をまとめておきました。

宣言部分はこちらです

#import <Foundation/Foundation.h>

@interface SampleClass : NSObject {

}

+(NSString*)getString;

+(void)setString:(NSString*)str;

@end

定義部分はこちらです。

staticなオブジェクトを宣言はidにしておくほうがよさそうです。

#import “SampleClass.h”

@implementation SampleClass

static id string = @”hogehoge”;

+(NSString*)getString {

return string;

}

+(void)setString:(NSString*)str {

string = [str copy];

}

@end

こうすることによって、メンバ変数をグローバル変数のように扱うことができます。

Objective-Cではオブジェクトを可変型の配列として扱うことのできるNSMutableArray(NSMutableDictionary)クラスがあります。しかし、これらのクラスではオブジェクトしか配列にすることしかできず、構造体を配列にすることができません。そこで、NSValueを用いて構造体をNSMutableArrayに追加して見ました

NSMutableArray *rangeArray = [[NSMutableArray alloc] init];

for (int i=0; i<10 ;i++){
 NSRange range = {i,1};
 NSLog(@”range:%d,%d”,range.location,range.length);
 NSValue* val = [NSValue valueWithBytes:&range objCType:@encode(NSRange)];
 [rangeArray addObject:val];
}

NSEnumerator *ranges = [rangeArray objectEnumerator];
id obj;
while ((obj = [ranges nextObject])) {
 NSRange range;
 [obj getValue:&range];
 NSLog(@”range:%d,%d”,range.location,range.length);
}

ほかにも、構造体に添え字をつけて配列にしたり、mallocで動的に確保することができますが、可変にすることができません。構造体のみを可変の配列にすることはあまりないかもしれませんが、この方法で可変の構造体を扱うことができました。

  • 製品・サービス
    PC、iPhone対応のeラーニングシステム。20名まで無料でASPサービスを利用できます
    PC、iPhone対応のeラーニング学習管理システム(LMS)【SmartBrain】
    http://smartbrain.info/
    PC、iPhone対応のeラーニングシステム。ユーザ数無制限のASPコースをご用意。


    eラーニングポータルサイト【elearning.co.jp】
    http://elearning.co.jp/
    eラーニング専門企業(株)キバンインターナショナルの製品を紹介しています。


    コンテンツビジネス支援パック
    http://contentsbank.jp/

    Ustream配信、動画コンテンツ制作、セミナーにご利用いただけるレンタルスタジオ
    Ustreamレンタルスタジオ「パンダスタジオ」
    http://pandastudio.tv/

    eラーニング専門企業(株)キバンインターナショナルのスタッフが、eラーニングに関する情報・最新事情をBlogでご紹介。月50本程度の情報発信を行っています。
    ブログ「blog.eラーニング.co.jp」
    http://blog.elearning.co.jp/

  • アーカイブ
  • カテゴリー
  • Amazon
  • タグ