2010年11月15日月曜日

ちょっと分析

 私はとくったーの事業のなかのとくったーアプリを制作している.先日β版を配ったりもした.詳しくはリンクを見て下さい.

 アプリの出来はまだまだ動作が不安定でアプリが落ちる.最初から作り直していいアプリを作りたい.しかし,私は大学4年だ.卒論もある.もう一つバイトでアプリを頼まれている.どうしたものか…後輩に任せようかな^^

 アプリはチームで作っていた.チームでものを作るのはこんなにもむずかしいのかと思った.もう少しノウハウを勉強しないと.会社とかだとちゃんとあるのだろうが俺たちにはなかった.意見を出すだけだしてまとまらなかった…

 ドラッガーとか読んだほうがいいのかなぁ.iTunesで購入しようか

 また,自分はまだまだだと痛感した.プログラムのプの字もわかってないね.もっと勉強しよう.キレイなコードというものを書いてみたい.
とりあえずこれもうすぐ発売されるので頑張る

 以上.

2010年10月15日金曜日

NSData->NSString NSString->NSData

 変換はNSString->NSIntegerとその逆以外覚えてない.

 これも当然必要なので覚えておこう


 iPhoneメモ

2010年10月5日火曜日

@interface ClassName (Category)

 疑問に思っていた部分が解消された.

 【コラム】ダイナミックObjective-C

 

学歴早見表

 けっこうむずかしいのだ.おれの力不足^^;

 妥協したやつをリリースするとぶっ飛ばされるのでもうちとがんばる

2010年9月30日木曜日

遅延実行

[self performSelector:@selector(openAlert) withObject:nil afterDelay:1.0];
便利そうだなぁ
メモメモ

2010年9月16日木曜日

学歴早見表のアップデート目標

 最近学歴早見表をアップデートしようと思っているのだけどバイトやら学業で全然手をつけてない.というよりアップデートするヤル気が出ない^^;

 そこで目標立ててとりあえず自分を追い込みます

 目標:10月5日までに最新バージョンを作成する
 内容:浪人、留年対応

 これでどうでしょうか.9月は発表会があってすべて頭がそっちに行ってますのでムリっす^^;

 なのでこれで勘弁してください.作成するのであって審査が通るのがいつになるかわからないですがよろしくお願いします.

 派生アプリも少し考え中です.

2010年7月23日金曜日

if文,for文など・・・

if文

if文の形は

if(条件式){
条件式に合う場合の処理
}else{
条件式に合わない場合の処理
}

です.ifとはもし・・・ならば・・・という意味で
もし条件式に合うならば・・・をしろということです.

ちなみに条件式に当てはまる場合は1(真:true)を当てはまらない場合は0(偽: false)を返します.

条件式は算術演算子ではなく等価、不等価、関係演算子を使います
以下は条件式で使われる演算子です

演算子内容
a <>aがbより小さければ
a <= baがbと同じか小さければ
a > baがbより大きければ
a >= baがbと同じか大きければ
a == baとbが等しければ
a != baとbが等しくなければ
((a) && (b))式aと式bが真ならば
((a) || (b))式aまたは式bが真ならば
!aaが真なら偽、偽なら真


等しければ、という条件は = ではなく == とイコールがふたつ続くことに注意してください
= は算術演算子の「代入」なので意味が違います。条件式で「等しければ」という意味の演算子は == です





if(i == 2){
NSLog(@"2になった");
}else if(i == 3){
NSLog(@"3になった");
}else{
NSLog(@"それ以外!!");
}


for文


for (初期化;条件式;変化式){
実行する処理1;
実行する処理2;
実行する処理3;
...;
}


例を見せたほうが早いと思うので


for (j = 0; 10 > j; j++) {
NSLog(@"j:%d",j);
}

出力結果

j:0
j:1
j:2
j:3
j:4
j:5
j:6
j:7
j:8
j:9

HelloWorldのコード

HelloKouchiViewController.h

#import

@interface HelloKouchiViewController : UIViewController {
// IB(Interface Builder)上のコントロールと結びつけるためのアウトレットを宣言
IBOutlet UILabel *label;
IBOutlet UIButton *helloButton;
// バラーメータの宣言
NSInteger i;

}
// プロパティ名を宣言
@property(nonatomic, retain) UILabel *label;
@property(nonatomic, retain) UIButton *helloButton;

/*
IBActionと記述することによってInterface Builderでこのメソッドactionとしてを認識できるようになります
helloButtonボタンを押した時のアクション
*/
- (IBAction) helloAction;

@end



HelloKouchiViewController.m

#import "HelloKouchiViewController.h"

@implementation HelloKouchiViewController

@synthesize label;// UILabel
@synthesize helloButton;// UIButton



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
i = 0;// 初期化
}

#pragma mark - IBAction
- (IBAction) helloAction{
if ( i % 2 == 0) {// !!!:もし i を 2で割ったときにあまりが0なら
self.label.text = @"Hello World!!";
NSLog(@"self.label.text:%@",self.label.text);
i++;// i = i + 1;
}else {
self.label.text = @"";
i++;
}
}



- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)dealloc {
[super dealloc];
[label release];
[helloButton release];
}

@end

2010年7月19日月曜日

UIActionSheetにUIPickerViewを組み込みたい

iPhoneアプリに時間割ってアプリがあるんですがその中で



こんなことやってるんですよねーーー.

UIActionSheetにUIPickerViewをくわえてるんですよね.


う〜〜〜ん.これがよくわからない.

どこかわかり易いサイトとかあったら教えてくださーーい.

2010年7月17日土曜日

学歴早見表ver1.0をリムーブしました.

 一旦学歴早見表ver1.0をリムーブしました.

 レビューでのコメントは最もです.速やかに対処しユーザの要望がある程度クリアできたと思った時点でリリースしたいと思います.


 

2010年7月16日金曜日

学歴早見表

現在私がリリースした学歴早見表が無料ビジネス部門(?)で第2位になっております.
総合でも第56位です.

皆さまありがとうございます.

App Storeにver1.0.1を提出しましたのでアップデートはもう少しお待ちください.

2010年7月14日水曜日

学歴早見表ver1.0をリリースしました

学歴早見表をリリースしました.

このアプリは履歴書を使うときに使用してみてください.
私が学歴を全然覚えられないので作ってみました.


2010年7月13日火曜日

URLから画像を表示させる


NSURL *url = [NSURL URLWithString: [imageUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *data = [NSData dataWithContentsOfURL: url];
[imageView setImage:[UIImage imageWithData:data]];

imageUrlは画像のURL。URLがNSString型なのでエンコードさせてNSData型に変換して
imageWithDataで表示させる。

しかし、これは激遅なので注意しましょう。

2010年7月11日日曜日

乱数について

rand() % 100;



とかにすると乱数を発生させることができるが同じ数字ばかりが出てきてしまう。

arc4random() % 100;


だと数字が荒れるはずだ。

違ったら教えてください。

2010年6月26日土曜日

[Objective-C]プロトコル メモ書き

プロトコルはJavaでいうところのinterfaceだと思います。
説明としては、「実装が期待されてるメソッドの定義集」って感じでしょうか。

でもこの代理人の証さえあれば、 自分のメソッド内から呼び出したUIAlertViewのdelegateを自分自身(self)にすることで、ユーザーの反応結果を受け取ることができます

プログラマメモ2

autoreleaseとrelease

リリースのタイミングなどについて

・何回も繰り返されるループの中で、ローカル変数に対してautoreleaseを使うことは避ける
・autoreleaseを使ったコードを何度もループせざるを得ない場合には、NSAutoreleasePoolで適切な頻度で解放する


autoreleaseを使うと本当に遅くなる?という疑問を実測しながら検証中です

メモリ管理



UIImage* img1 = [[UIImage alloc] initWithContentsOfFile:imgPath1];
UIImage* img2 = [[UIImage alloc] initWithContentsOfFile:imgPath2];
NSLog( @"A cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = img1; //img1はここでretainされる
NSLog( @"B cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = img2; //im1はrelease img2はretainされる
NSLog( @"C cnt %d %d\n", img1.retainCount, img2.retainCount );
imageView1.image = nil; //img2がreleaseされる
NSLog( @"D cnt %d %d\n", img1.retainCount, img2.retainCount );
[img1 release]; //ここでretainCount 0となり解放(dealloc)される
[img2 release]; //ここでretainCount 0となり解放(dealloc)される

==========出力結果========================
A cnt 1 1
B cnt 2 1 ←セットしたimg1がretainされてる
C cnt 1 2 ←img1はreleaseされ、セットしたimg2がretainされる
D cnt 1 1 ←img2がrelease、両方ともセットする前に戻る
セットしたオブジェクトの参照を解きたければ、nilをセットするとよい。(セットした先のクラスがreleaseの面倒までみてくれる)


参考文献iPhoneSDK + ObjectiveCにおけるメモリ管理のはまりところ

2010年6月25日金曜日

用語メモ

忘れやすいのでメモ

ガベージコレクション・・・プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ収集」となる

アトミック・・・プロパティへのアクセスがスレッドセーフであるという意味

スレッドセーフ・・・あるコードがスレッドセーフであるという場合、そのコードを複数のスレッドが同時並行的に実行しても問題が発生しないことを意味する。

アクセサメソッド・・・オブジェクトの状態を取得または設定するインスタンスメソッドです。Cocoaの用語では、オブジェクトの状態を取得するメソッドを「getアクセサ」または「getter」、オブジェクトの状態を変更するアクセサを「setアクセサ」または「setter」と呼びます。「インスタンス変数にアクセスするメソッド」

プロパティ

この自動的に付けられる名前以外に、自分で名前を指定することもできる。そのために使われるのが、属性のgetterおよびsetterだ。getterは読み込み、setterは書き込みのためのアクセサの名前を指定する。次のように使う。

@property (getter=isEnabled, setter=makeEnable:) BOOL enabled; 

getterメソッドは、引数はなしで、プロパティの値を返すもの。setterメソッドは、プロパティの型の引数を1つ取り、返り値はvoid型になるものになる。注意してほしいのは、setterは引数を取るので、最後にコロンを付けておかなくてはいけないことだ。Objective-Cでは、引数は必ずコロンの後に来る。このコロンを忘れると、コンパイルが通らない。




参考文献ダイナミックObjective-C

2010年6月17日木曜日

パースの時のメモ

[[NSString alloc] initWithData:xml encoding:NSUTF8StringEncoding];

2010年4月10日土曜日

URLスキーム


NSString *mailto = [NSString stringWithFormat:@"mailto:body=%@",
[textField.textstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:mailto];
[[UIApplication sharedApplication] openURL:url];

これでメールにいけます.
詳細は以下
mailto:info@example.com?subject=件名&body=本文

その他のURLスキームは
iPhoneで主婦の小遣い稼ぎ
でだいたい分かる

URLスキーム対応のアプリをつくるなら
強火で進め
を見ればわかる

俺は自アプリ→他アプリ→自アプリになるようにしたいんだがそこら辺がよく分からない。
他アプリにコールしてもらわなきゃいけないからムリなアプリもあるだろうがメールならイケるとおもうだけどな・・・
わかる方はいませんか?

ペースト機能の使用


UIPasteboard *pasteBoard=[UIPasteboard generalPasteboard];
[pasteBoard setString:textField.text]; // 文字列の書き込み textField.textは保存したい文字列


これでペーストボードに保存されています。

UIViewアニメーション

animeViewを0.1から1.5の大きさにするアニメーション


[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5f]; //1.5秒でアニメーションする
[UIView setAnimationCurve:UIViewAnimationCurveLinear];//等速度で進行します
[UIView setAnimationDelegate:self]; //デリゲート
[UIView setAnimationDidStopSelector:@selector(someAnimationDidStop:finished:context:)]; // アニメーション終了後
[UIView setAnimationRepeatAutoreverses:YES]; // リバース動作
CGAffineTransform transform1 = CGAffineTransformMakeScale(0.1, 0.1);
CGAffineTransform transform2 = CGAffineTransformMakeScale(1.5, 1.5);
[self.animeView setTransform:transform1];
[self.animeView setTransform:transform2];
[UIView commitAnimations];// 終わり

//アニメーション完了のイベント処理
- (void)someAnimationDidStop:(NSString*)animationID finished:(BOOL)finished context:(void*)duration {
NSLog(@"アニメーション完了");
}



参考文献------
スマッシュを作ってみた(1)
『支出管理』サポート
UIViewで手軽にアニメーションを実行する方法
iPhoneSDKのUIViewアニメーション

2010年4月5日月曜日

ローカライズする

文字列出力部分にNSLocalizedString() を利用する


NSString* string = NSLocalizedString(@"hoge", @"comment");

@"hoge"が出力したい文字列で@"comment"が@"hoge"に対するコメントとなる。

Localizable.string ファイルを生成する


まず、翻訳ファイルLocalizable.stringを作成する。

Xcode>どのファイルでもいいのですがファイルの場所で右クリック>追加>新規ファイル

>Mac OS X「Resousers」>Strings File で名前を付ければ作成でる。

手動で作り上げることもでるが、便利なコマンドがある。

ターミナルでプロジェクトファイルがあるところで
genstrings -a $(find . -name "*.m")

をすればいい。-a をしないと上書き保存になってしまうので注意が必要。

Xcode に Localizable.string ファイルを取り込む


Xcode にドラッグ&ドロップして追加します。グループは Resource にでも入れておけばよいかと思います。Xcode に取り込んだ後、ローカライズの設定が必要です。Localizable.string ファイルを右クリックして「情報を見る」を選択します。表示されウィンドウの「一般タブ」の左下にある「ファイルをローカライズ可能にする」をクリックし ます。再度 Localizable.string の情報を見るを選択すると左下に「ローカリゼーションを追加」というボタンをあるのでクリックして追加したい言語を選択します。選択できるのは English, Japanese, French, German です。それ以外は手動で追加する必要があるようです。

翻訳する


Xcode から Localizable.string の下に出来ている言語ファイルを選択して翻訳したい言語ファイルを開いて編集していきます。このときに、NSLocalizedString() でコメントを入れておくと
/* comment */

"hoge" = "hoge";


となっているはず。

これをJapaneseだと
/*comment*/

"hoge" = "ホゲ";


に変更したりすればいいかと思う。

注意事項


Localizable.string ファイルは UTF-16 で保存しなければいけません。iPhone シュミレータではローカライズされているのに、実機でローカライズされていないときはだいたい文字コードの問題が多いです。




 





2010年3月25日木曜日

Macのアプリケーションについて

 Macのアプリはたくさんありますが私がおすすめするアプリを紹介したいと思います。というか私が入れているやつを紹介するので良さそうなやつは入れてみてください。

 Growl- これがあってのMac!!有無を言わずに入れてみてください。ついでにGrowlMailもよろしく
動画
 MPlayer - メディアプレイヤー。10秒早送りや巻戻しができるのが好き

 VLC - メディアプレイヤー。あんまり使っていない

 Perian - これさえ入れておけばだいたいのコーデックが再生可能なQuickTimeコンポーネント

 Flip4Mac - 拡張子のwmvとwmaが見れるようになれます
Twitter
 夜フクロウ - twitterやるならこれが簡単で便利だと思う

 Tweetie - 私は副垢を持っているので副垢はこれを使っています
開発
 Xcode - ソフトウェアを開発するためのアップルの統合開発環境 (IDE) 。iPhoneアプリ作るんならこれを入れろ!!

 eclipse - 統合開発環境(IDE)の一つ。IDEの中ではおすすめだと思いますが機能がありすぎて私は使いこなせていません

 CotEditer - テキストエディタ。Macではmiが有名らしいけど私はこれを進めておく。何かと設定できていいはず
ブラウザ
 Firefox - インターネットブラウザ。これを知らないやつはいないでしょ

 Google Chrome - インターネットブラウザ。上に同じ

 BathyScaphe - 2ch用のブラウザ。2ch見る人はどうぞ
IM
 Skype - P2P技術を利用したインターネット電話サービス。友達との連絡にどうぞ

 Adium - インスタント・メッセンジャサービスをまかなってくれます
iTunes
 iTunes - とりあえず入れときましょ

 LyricsMaster - 歌詞を見つける。iTunesと組み合わせて使用
オンラインストレージ
 Dropbox - オンラインストレージ。無料で2GBだけど十分だろ。物足りなかったらお金払ってください

 Evernote - メモ管理用システム。複数台に入れておけば共有できるのでよい
デスクトップカスタマイズ
 GeekTool - デスクトップカスタマイズツール

 NerdTool - デスクトップカスタマイズツール。GeekToolとかなり似ています。お好きなほうをどうぞ

 DockLibrary - dockカスタマイズツール。暇な方はどうぞ
その他
 Thunderbird - メーラー。MacにはMail.appというメーラーがデフォルトで入っているのでそっち使ったほうがいい気がする

 Cyberduck - FTPクライアント

 DiskAid - iPhone/iPod touch内のファイルをエクスプローラ風に管理できる。私はi文庫アプリの時だけ使用した