[iOS] コメントの書き方 | プログラミング初心者向けObjective-C入門

2013/04/11

今回は型について説明するつもりだったのですが、その前にまだコメントについて説明してませんでした。

コメントとは

プログラム中に書けるメモです。
コメントを書くことによって、そのプログラムが何を表しているかを説明することができます。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        //1行コメントは行頭にスラッシュを2つ入れる
        
        //コメントの後は何を書いてもコンパイラに無視される
        
        //直前に書いたりできます
        NSLog(@"出力しちゃうよ");

        NSLog(@"Hello my comment!"); //こんな感じに後ろにつけてもOK
        
        //連続してコメントを買いてもOK
        //こんな感じに
        //なります
        
        /*
         毎回スラッシュをかかなくても、
         こんな感じに
         複数行にわたるコメントを
         書くやり方もあります。
         */

         /* このタイプでも1行にできます */
    }
    return 0;
}

この投稿の続きを読む »

LINEで送る
Pocket

[iOS] プログラムを実行する | プログラミング初心者向けObjective-C入門

2013/04/10

では実際に、プログラムを実行してみましょう。

プログラムを実行する(Run)には、ウインドウ左上の三角ボタンを押します。
すると、ウインドウ下側のデバッグ領域(Debug area)に「Hello, World! 」と表示されます。

130410_fig1

今回実行するのに三角ボタンを押したのですが、プログラムするのに慣れてくると、毎回マウスなどに手を持っていくのが面倒になってきます。Command + R を押すと、キーボードから実行が可能になりますので試してみてください。

この投稿の続きを読む »

LINEで送る
Pocket

[iOS] Xcodeを使ってはじめてのプロジェクト作成 | プログラミング初心者向けObjective-C入門

2013/04/9

早速プログラムの解説に入りたいところですが、その前にプログラムを書くアプリの説明からはじめます。

Objective-CはふつうXcodeというアプリで書くことになります。XcodeはAppleが作っている公式開発アプリです。公式というので、公式以外ももちろんあります。その他メーカーやユーザーたちがいろいろな互換アプリやツールを作っています。

XcodeはApp Storeアプリで検索をかけるとすぐに見つかると思うので、ダウンロードしてインストールしてください。サイズが大きいので結構時間がかかると思いますのが気長にどうぞ。

130407_fig1

こんな感じのアイコンです

この投稿の続きを読む »

LINEで送る
Pocket

[iOS] はじめに | プログラミング初心者向けObjective-C入門

2013/04/8

こんにちは。きんくまです。

これからプログラミングをほとんどやったことのない人向けに、Objective-Cの入門記事を書いていこうと思います。

この投稿の続きを読む »

LINEで送る
Pocket

[iOS] CFTypeRefをARC下でAutoreleaseしつつReturnする

2013/03/31

こんにちは。きんくまです。

この方法であっているかわからないのですが、一応メモ。

やりたいこと

CoreFoundationのObjectをAutoreleaseしつつReturnしたいことがあります。

私の場合、CGImageRefとかCGContextRefとかがそうでした。

非ARCの場合はこんな感じにやればOKでした。
>> Returning an autorelease’d CFTypeRef with ARC

- (CGImageRef)image {
    CGImageRef myImage;
    id myImageID = (id)myImage;
    [myImageID autorelease];
    return myImage;
}

でこれをどうやってARC下でやればよいのかなーと思いまして。
上のURL先ではns_returns_autoreleasedというのでやっているみたいなのですが、あんまり聞いたことないので、わりと普通っぽいやり方でできないのかなと。

解決方法?

この本とにらめっこすると、以下の3つのキーワードがよさそうな感じでした。

__autoreleasing これつけたものに代入するとautoreleaseしてくれる
__bridge_transfer これやると代入元がreleaseされる
__bridge オーナーシップは変更しないでCoreFoundationとObjective-Cのオブジェクトを変換できる

なんで、これらを利用してARCなしでうまくいっていたのを書き換えてやるとこんな感じになりました。

- (CGImageRef)image {
    CGImageRef myImage;

     //右辺でmyImageをreleaseしつつ左辺に代入。
     //左辺では__autoreleasingがついているのであとでautoreleaseされる
     id __autoreleasing myImageObj = (__bridge_transfer id)myImage;

     //このままだとObjective-Cのオブジェクトなので、CoreFoundationに戻してあげる。
     //その際オーナーシップは変更しないので、__bridgeでキャストする
    return (__bridge CGImageRef)myImageObj;
}

上のコードは本当に宣言して代入しているだけなんで意味はないのですが、実際にはこんな感じに使われるかと

- (CGImageRef)sampleReturnAutoreleasingImageInContext:(CGContextRef)ctx
{
    CGImageRef myImage = CGBitmapContextCreateImage(ctx);
    
    id __autoreleasing myImageObj = (__bridge_transfer id)myImage;
    return (__bridge CGImageRef)myImageObj;
}

これで、Analyzeしてもエラーがでなくなって、Profileでリーク漏れチェックしても出てないので大丈夫かと思いますが、自信がないので使う人がいたら自己責任でお願いしますです。

LINEで送る
Pocket

[iOS] リマインダーの仕様について考える

2013/03/24

こんにちは。きんくまです。

Habit Keeperでリマインダーをつけて欲しいというご要望が結構前から何件かいただいておりまして、前から開発者用の仕様書を読んだり、プログラムの実験してまして、それについて考えてることを書き出してみます。

リマインダーをつける方法は2つ

iOS6の現在リマインダーやアラームのようなものを実現するには大きく分けて2つの方法があります。

1. Event Kit を利用する
>> Calendar and Reminders Programming Guide

2. Notificationを使う
>> Local and Push Notification Programming Guide

この投稿の続きを読む »

LINEで送る
Pocket

[iOS] 日課 / 習慣 / ルーチンワークを記録するiPhoneアプリHabit Keeperをバージョン1.50にアップデートしました

2013/03/22

こんにちは。きんくまです。

日課 / 習慣 / ルーチンワークを記録するiPhoneアプリHabit Keeperをバージョン1.50にアップデートしました。

>> 日課/習慣/ルーチンワークをサクサク記録!- Habit Keeper (有料版)

>> 日課/習慣/ルーチンワークをサクサク記録!- Habit Keeper Free (無料版)

今回のアップデートの内容は

・効果音を追加しました
・予定日以外のチェックが可能になりました
・メモ機能を追加しました(有料版のみ)

となっております。

この投稿の続きを読む »

LINEで送る
Pocket

ページトップへ戻る