Objective-C [ObjC pa ..
577:デフォルトの名無しさん
09/11/27 16:21:30
newとallocの違いが今イチ分からん。
578:デフォルトの名無しさん
09/11/27 17:30:29
>>577
俺も俺も
てか乳って使ったことない。
579:デフォルトの名無しさん
09/11/28 00:03:58
+newは+alloc -initと同義
580:デフォルトの名無しさん
09/12/01 18:38:18
typedef enum {a,b} defA;
といった宣言をヘッダに記述し、これを他のクラスからimportして
defA a;
のように利用しようとすると、
"expected specifier-qualifier-list before 'c'"とエラーが
起きてしまいます。
どのように定義すれば良いのでしょうか。
581:デフォルトの名無しさん
09/12/01 18:43:26
enum {
a,
b,
};
typedef NSInteger defA;
582:デフォルトの名無しさん
09/12/01 19:24:09
>>580
ソース
583:580
09/12/01 20:55:30
すいませんちょう単純な勘違いしてました。
他のヘッダが邪魔をしていて、importの前に書いたらうごきました。。
584:デフォルトの名無しさん
09/12/01 23:11:37
Objective-Cって、メソッド名ひとつ考えるのにも英語力を要求してくるな。
こりゃ、そんじょそこらのなんちゃってプログラマに扱えるしろものじゃねーな。
585:デフォルトの名無しさん
09/12/02 00:29:56
なんちゃってプログラマでも簡単に使えるよ。英語さえわかれば。
586:デフォルトの名無しさん
09/12/02 00:50:29
>>584
別に日本語ローマ字書きでもいいじゃん
587:デフォルトの名無しさん
09/12/02 04:06:03
辞書が存在していない時代だったらそう言えるかもしれないね。
588:デフォルトの名無しさん
09/12/02 05:26:27
辞書の歴史は紙の歴史より古いからなあ。
589:デフォルトの名無しさん
09/12/02 19:58:30
DataWoTuika:id KonoIchini:idx omake:option
590:デフォルトの名無しさん
09/12/02 20:46:14
引数がkonochincoとomekoに見える
591:デフォルトの名無しさん
09/12/02 21:10:19
けしからん奴じゃ
592:デフォルトの名無しさん
09/12/03 19:40:15
NSStringにHTMLのソースが入ってるんですけど、
そこから<li>〜</li>の部分だけ抜き出したいと考えています。
ただ、それをどうやって実装すればいいのかが良く分からないです・・・。
今頭の中にある感じだと、<li>とマッチする最初の場所と
</li>とマッチする最後の場所を探して、その部分を抜き出すという方法なんですけど、
もっと簡単に正規表現みたいな感じでピュッと抜き出したりできないでしょうか?
593:デフォルトの名無しさん
09/12/03 20:19:18
Google Toolbox for Mac の GTMRegex でも使え。
594:デフォルトの名無しさん
09/12/03 21:59:37
まさかiPhone初心者スレで聞いてたやつじゃねーだろうな
595:デフォルトの名無しさん
09/12/03 22:07:13
>>592
とりあえず簡単にやるならスキャナ使えば?
NSString *hoge = "hoge <ol><li>foo</li><li>bar</li></ol>";
NSScaner *scanner = [NSScanner scannerWithString:hoge];
while (YES) {
NSString* itemString;
if (![scanner scanUpToString:@"<li>" intoString:NULL]) break;
if (![scanner scanUpToString:@"</li>" intoString:&itemString]) break;
NSLog(@"item = %@",itemString);
}
596:デフォルトの名無しさん
09/12/04 00:52:37
>>592
NSXML 使って XPath でピョッと
597:デフォルトの名無しさん
09/12/05 22:45:14
なんか、releaseしなきゃならん場合としないでいい場合の違いが良くわからんわ。
本のサンプルとかみても、retainしてるのに、どこにもreleaseがなかったり、allocして
autoreleaseも呼んでるのに、deallocでreleaseもしてたりとか、もうわけわかめ。
なんじゃこりゃ、そんなに神経質にならなくてもいいのか?
598:デフォルトの名無しさん
09/12/05 23:07:44
カウンタ使ってメモリ管理するなら当然覚えないと、意味不明なバグに遭遇することしきり。
自分は Instruments の Leaks 使って、可視化されたメモリリークを見ながら試行錯誤して覚えたけど。
599:デフォルトの名無しさん
09/12/05 23:09:06
あと初心者は Build & 解析はかなり役に立つんじゃ。
600:デフォルトの名無しさん
09/12/06 03:36:39
まずは
URLリンク(developer.apple.com)
を読まんといかんよ。
iPhone じゃなくて Mac のプログラムならガーベジコレクション ON
にして retain/release 忘れるという方法もあります。
ただ、
>サンプルとかみても、retainしてるのに、どこにもreleaseがなかったり、allocして
>autoreleaseも呼んでるのに、deallocでreleaseもしてたりとか、もうわけわかめ。
これは本が間違ってるんじゃないの?何の本かわからんから何とも言えんが。
601:デフォルトの名無しさん
09/12/06 06:55:11
>>597
そんな本あるなら晒してみろよ
602:デフォルトの名無しさん
09/12/06 13:36:42
初期化するインスタンスメソッドの他に、勝手にAutoreleaseするクラスメソッドも
あったりするからちょっとややこしい。
603:デフォルトの名無しさん
09/12/06 13:45:34
(あるクラスの init メソッド内で、インスタンス変数に代入するオブジェクトを)retainしてるのに、
(init 内の)どこにもreleaseがなかったり、
(そのクラスを)allocして autoreleaseも呼んでるのに、
(そのクラスの)deallocで(インスタンス変数を)releaseもしてたり
と解釈するとしたら、まったく正しいコードけど
604:デフォルトの名無しさん
09/12/06 13:53:05
>>601
サンプルはあくまでサンプル。アプリまるごと完全詳解みたいのならともかく。
Obj-Cに限らず、その他言語のO'Reilly本やMSDNでも、
サンプルソースと現実的に推奨されるソースは異なる場合は多い。
参照カウンタの説明でretainしたものをreleaseしてないなら問題だと思うけど、
多分、別の説明で使用されているサンプルがそうなってるんでしょ。
>>602
>勝手にAutoreleaseするクラスメソッド
コンビニエンスコンストラクタのこと?
605:デフォルトの名無しさん
09/12/06 14:10:04
>>604 あぁ多分それ
俺もこの辺、よく迷うわ。propertyの宣下にもretainやassignの指定があるから、
宣言をよく確かめて使わないとかいけないとか気を使うのがちょっと大変。
便乗質問なんだけど、あるクラス(A)で動的にView(B)を作って(alloc & init)、
別のView(C)にaddSubView した場合って、Aで明示的にBをreleaseする必要
があるんだっけ? それとも、Cの解放時にBも勝手にreleaseしてくれる?
606:デフォルトの名無しさん
09/12/06 15:11:08
当然あるよ。
607:デフォルトの名無しさん
09/12/06 15:34:14
>>606
何が当然あるか? Aで明示的にBをreleaseする必要があるという意味あるか?
608:デフォルトの名無しさん
09/12/06 15:47:51
ないあるよ
609:デフォルトの名無しさん
09/12/06 16:09:08
hoge = [[Hoge alloc] init]; // 1
[foo addHoge : hoge]; // 2
…
[foo release]; // 1
よってメモリリークになる。
だから、autorelease か add 後に [hoge release]; の必要がある、筈。
610:デフォルトの名無しさん
09/12/06 16:37:49
わかったある。謝謝
611:デフォルトの名無しさん
09/12/06 21:00:38
>>609
エ?こうしとけばリークにならねえだろ?
-(void)dealloc {
...
[mHoge release]; // 0
mHoge = nil;
...
[super dealloc];
}
612:デフォルトの名無しさん
09/12/06 21:02:19
そうか?
613:デフォルトの名無しさん
09/12/06 21:17:35
そのdeallocは何をトリガーにして呼ばれるんだっちゅう
614:デフォルトの名無しさん
09/12/06 22:15:11
>>611
だから、>>609はそうしろって書いてるじゃん
615:デフォルトの名無しさん
09/12/06 22:25:14
自分が 609 だけど、foo が dealloc 時に hoge をリリースするのは、
addHoge: (addSubView:)には retain されてるから当然。
でもそれだと±1で、Hoge alloc init 時のカウント1をリリースされてないから、リークになる。
616:デフォルトの名無しさん
09/12/06 22:44:59
まぁ、init時にautoreleaseつけとくのが無難かな
617:デフォルトの名無しさん
09/12/07 00:14:08
無難とかそういう問題ではなかろう。
618:デフォルトの名無しさん
09/12/07 00:45:02
>602 >605
initほげほげ、copyほげほげ は retain されて、
それ以外のメソッドは autorelease されたのが返ってくる。
[obj method:a]
としたばあいに、obj が a がずっと必要なら method 内部で retain するし、
いらなかったらそんなことはしない
だから、自分があるオブジェクト a を release すべきかどうかは、
自分が呼んだメソッド内でどうなっているかとかは気にしなくてよくて、
単に自分がいらなくなった時点で release すればよい。
まあリリース足りなければメモリ食うだけだけど、
リリースしすぎは一瞬でクラッシュするので、
きちんと理解して書くか、NSZombie でチェックするか、
release しすぎないようにしてください。
619:デフォルトの名無しさん
09/12/07 01:19:21
ウィーッス
620:デフォルトの名無しさん
09/12/07 13:31:55
>>618
newほげほげも忘れないであげてください
621:デフォルトの名無しさん
09/12/07 17:53:50
雑談はスレチだよね。チラ裏すまん。
Objective-Cのオブジェクトの所有権ポリシーって、
(C++におけるメモリ管理と)やることは本質的に同じでありつつ
保守効率が格段に上がる優れた機構ではあるとは思うけど、
Objective-Cってどんなもんだろってちょっとイジってオナりたいとき、
一通り理解するまでとっかかりで苦労するねぇ。
C++慣れしてると、余計なお世話に感じてしまうっていうか。
なんだか好きになれない。
622:デフォルトの名無しさん
09/12/07 17:59:43
まあ、今はGCがあるし
623:デフォルトの名無しさん
09/12/07 20:34:51
iPhoneではGCが使えないらしい...ゾ
624:デフォルトの名無しさん
09/12/07 22:15:56
Objective-Cのメモリ管理3原則
1. alloc,copy,retain,newしたインスタンスはreleaseする必要あり
2. 1した覚えの無いインスタンスは勝手にrelesaeしてはいけない
3. 1してないインスタンスはどこかでreleaseされるので、保持したい場合はretainかcopy
625:デフォルトの名無しさん
09/12/07 22:28:22
add したら直ぐ release して良いのかと思ってたら、そうじゃないんだね
626:デフォルトの名無しさん
09/12/08 00:43:52
>>621
オブジェクトプール+手動の参照カウントってのは、大昔の手法だよ。
人頼みだとバグが多くなるし、保守効率も下がる。だからメモリ管理コードを
一々書かなくて済むGCやスマートポインタが主流になってる。
模したSmalltalkみたいに最初からGC付きなら無かった機構だから>>622が正解
627:デフォルトの名無しさん
09/12/08 09:22:55
でも、iPhoneがGCは無効なんでしょう?
ここにいる皆さんは、GC派とリファレンスカウンタ派、どちらが多いのでしょうか?
628:621
09/12/08 11:17:45
あ、すみません、iPhoneアプリ開発でObjective-C処女喪失したもので。
iPhoneはGC無いです。
(ただ、あったとしてもiPhoneはメモリ極小なので、autoreleaseさえ極力避けるべきと公式で指摘されています。)
>>624の規則だけですが、解れば便利な@propertyと@synthesizeも、
とりあえずちょっとイジってみようレベルの初見だと、
iPhone画面にHelloWorld表示するだけのソースすら、
「@property(nonatomic,retain)何この呪文、この入門書じゃソース解説にも記述無いし、
とりあえず詳細確認は後だな...あれ??実装でretainなんてしてなくね??なんで??
(ポチッ)ちょww動いたwwwけどHelloWorldのソースすらイミフwwww」
みたいな。
結局、入門書はHelloWorldで挫折、とりあえずちょっとイジるだけのつもりが、
公式ドキュメントを片っ端から読み漁って十分理解してから、
入門書のHelloWorldのソースを見直したのはいい思い出。。。
チラ裏に長文、本当にスマンかった。
最後に、InterfaceBuilderについて。
見た目だけでVB.NETくらい優しいお母さん的IDEだろうと思って触ると、火傷するね。
629:デフォルトの名無しさん
09/12/08 12:10:55
iPhone だと Hello World 如きに property つかわにゃならん訳?
630:デフォルトの名無しさん
09/12/08 13:16:01
>>628
なんの入門書を読んだか知らんが、それはその入門書があきらかに悪いな
iPhone でプログラムやるには、
(古めかしいとか批判はいろいろあるかもしれないが、実際問題として)
retain/release ができなきゃ話にならない。
わかったつもりで通過すると絶対に意味不明なクラッシュをはじめて
あとで泣く羽目になるのに、説明しないなんてありえない。
とにかく変な入門書を掴んで失敗でしたね。
あなたが公式ドキュメント読める人で良かったですが。
あと、Interface Builder はふつうの(?)と違って、
コントロールダブルクリックしてもメソッド追加できないので、
その辺戸惑うかも知れませんが、ビューとコントローラの独立性が
自然に高まるようになってるのはいいところだと思います。
.Net やさんで iPhone プログラムはじめたひとはみんな
そう感じるみたいね。
URLリンク(dotnetaddict.dotnetdevelopersjournal.com)
とか。
631:デフォルトの名無しさん
09/12/08 18:47:31
今更だけど、
> オープンソースの現状について、おそらくは予想外の知られざる事実を明らかにした。
> 『Smalltalk』対『Objective-C』では? Smalltalk がほぼ3倍のコード量で勝利している。
URLリンク(japan.internet.com)
オープンソースの括りだから負けただけだよな?
632:デフォルトの名無しさん
09/12/09 12:41:07
>>629
いらないよ。コードなんて1行も書かなくてもHello Worldって表示するぐらいはできる。
完全に入門書が悪いわ。アップルの配布してるPDFのほうが数倍マシ。
633:デフォルトの名無しさん
09/12/09 22:34:49
NSURLでURLリンク(www.xxx.com)のようなURLから
index.htmlを抜き取るようなメソッドってないですかね?
スキームやホスト、アンカーなどを返すメソッドは見つかったのですが、
ファイル名を返すのが見つからないです・・・
634:デフォルトの名無しさん
09/12/09 23:02:12
NSString (NSStringPathExtensions) の
- (NSString *)lastPathComponent;
でも使え。NSPathUtilities.h に定義されてる。
635:デフォルトの名無しさん
09/12/09 23:13:06
>>634
ありがとうございます。
こんな便利なのがあったんですね。
というか、NSURLにもこのメソッドつけてほしいですねw
636:デフォルトの名無しさん
09/12/09 23:14:08
10.6にはついてるみたいよ。
637:デフォルトの名無しさん
09/12/09 23:25:55
ほんとだ。
- (NSString *)lastPathComponent AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER;
638:デフォルトの名無しさん
09/12/14 01:49:22
NSStringをURLエンコーディングしたいと考えています。
例えば
てすと → %A4%C6%A4%B9%A4%C8
のようにしたいのですが
NSString *test = @"てすと";
[test stringByAddingPercentEscapesUsingEncoding:NSShiftJISStringEncoding];
NSLog(test);
のようにしても、
8C48B78C6
のように表示されてしまいます。これを%A4%C6%A4%B9%A4%C8のように表示するにはどうすればいいのでしょうか?
639:デフォルトの名無しさん
09/12/14 01:58:22
NSLogが%をフォーマット文字と解釈して表示しちゃうせいだから気にしない
640:デフォルトの名無しさん
09/12/14 02:00:28
1. ソースコード内に日本語文字列 @"にほんご" を書かない。
それによって出来た文字列がどうなるかの動作は未定義です!
(うまくうごくときもあるかもしれませんが、コンパイラのデフォルト設定が
次のバージョンでかわると一瞬でおかしくなる可能性があります。)
必ず Localizable.strings を使うようにしてください。
2. NSLog(test) というふうに書かない!NSLog の第一引数は
フォーマット文字列です。% があるとフォーマット指示だと解釈されます。
NSString* test = @"%@";
NSLog(test);
とすると、NSLog は %@ をフォーマットと解釈するために
スタック上に偶然あるポインタの先のオブジェクトっぽいものにアクセスして
異常終了しますよ!
必ず NSLog(@"%@", test)
としてください。
641:デフォルトの名無しさん
09/12/14 02:02:39
NSString *test = @"てすと";
NSLog(@"%@", [test stringByAddingPercentEscapesUsingEncoding:NSShiftJISStringEncoding]);
2009-12-14 02:01:53.361 test[1467:a0f] %82%C4%82%B7%82%C6
642:デフォルトの名無しさん
09/12/14 02:03:33
なるほどなるほど、勉強になります。
ちゃんと表記したらちゃんと表示されました。
今まで面倒くさがってNSLog(NSString変数)みたいに書いてましたが
今度からちゃんと書こうと思います。ありがとうございました。
643:デフォルトの名無しさん
09/12/14 02:09:44
>>640
いつもの人乙
644:デフォルトの名無しさん
09/12/14 02:20:58
>>640
1. だけど、
URLリンク(developer.apple.com)
によると、10.5 からは UTF-16 の文字列も大丈夫って書いてあるよ。
ただ、C のソースコードを何のエンコーディングで保存しているかと、
gcc の -fexec-charset, -finput-charset の設定によるので、
URLリンク(developer.apple.com)
僕は @"にほんご"は怖くて使う気になりませんが。
645:デフォルトの名無しさん
09/12/14 02:24:31
>>638
というか URL のエンコーディングって ShiftJIS でいいんだっけ?
最近って真っ当なサイトなら UTF-8 じゃない? Wikipedia とか。
646:デフォルトの名無しさん
09/12/14 02:26:25
RFCではUTF-8である"べき"とされているな
647:デフォルトの名無しさん
09/12/14 10:11:57
10.5と10.6は、@"にほんご"は普通に使えてるなぁ。
ソースコードはデフォルトのままUTF-8。
648:デフォルトの名無しさん
09/12/15 01:41:01
KVC で質問があります。class_addMethod で追加したセッタ、ゲッタが
valueForKey: から呼ばれないんですが、なぜでしょう?そういうもの?
サンプルコードは以下のとおりです (Obj-C 2 です)
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface Aho:NSObject
{
}
@property(retain) NSString*foo;
@end
@implementation Aho
-(id)getter
{
NSLog(@"getter:%@",NSStringFromSelector(_cmd));
}
-(void)setter:(id)obj
{
NSLog(@"setter:%@,%@",NSStringFromSelector(_cmd),obj);
}
649:デフォルトの名無しさん
09/12/15 01:41:49
+(void)synthesizeSetterGetter:(NSString*)getterName
{
NSString*setterName=[NSString stringWithFormat:@"set%@%@:",[[getterName substringToIndex:1] uppercaseString],[getterName substringFromIndex:1]];
IMP getter=class_getMethodImplementation(self, @selector(getter));
class_addMethod(self, NSSelectorFromString(getterName), getter, "@:");
IMP setter=class_getMethodImplementation(self, @selector(setter:));
class_addMethod(self, NSSelectorFromString(setterName), setter, "@:@");
}
+(void)load
{
[self synthesizeSetterGetter:@"foo"];
}
@dynamic foo;
@end
int main(){
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc] init];
Aho*aho=[[Aho alloc] init];
[aho foo];
[aho setFoo:@"bar"];
[aho valueForKey:@"foo"]; // ここで例外がでる
[aho setValue:@"bar" forKey:@"foo"];
return 0;
}
650:デフォルトの名無しさん
09/12/15 02:51:37
valueForKey: はまずアクセサを探すはずなのにおかしいね。
@synthesize foo;
やって、
method_exchangeImplementations(class_getInstanceMethod(self, @selector(foo)), class_getInstanceMethod(self, @selector(getter)));
method_exchangeImplementations(class_getInstanceMethod(self, @selector(setFoo:)), class_getInstanceMethod(self, @selector(setter:)));
とかやるとちゃんと機能したけど、それは君の望むことじゃないか。
651:デフォルトの名無しさん
09/12/15 10:25:12
class_addMethod(cls, sel, imp, types) の中の、types が間違ってるから。
typese は(リファレンスで確認してね)、"返り値", "self", "_cmd", "引数..." なので、
class_addMethod(self, NSSelectorFromString(getterName), getter, "@@:"); // ×"@:"
class_addMethod(self, NSSelectorFromString(setterName), setter, "v@:@"); // ×"@:@"
とやると動く。
652:デフォルトの名無しさん
09/12/15 10:38:59
ついでに。+load で +synthesizeSetterGetter: を呼ぶとNSAutoreleasePoolがまだ
できてないタイミングなので、コンビニエンスコンストラクタを使うとリークする。
setterName = [NSString stringWithFormat:..]; の所。alloc + init + release を
使おう。それか、+load でやる代わりに +initialize で呼ぶとpoolが出来た後なので
コンビニエンスコンストラクタが使える。(分かった上でのサンプルならごめんよ)
653:デフォルトの名無しさん
09/12/15 11:41:32
みなさんありがとうございます、
おかげでうまく行きました。
型のエンコーディングをわかってませんでした。
Pool の件もどうもです。まあ数個ぐらい
リークしてもよかんべ
という気持ちでしたが、いけませんね。
type encoding は method_getTypeEncoding
をつかった方がいいとも
職場で教えてもらいました...
マルチポストみたいになってすみません。
654:572
09/12/19 15:58:57
質問させてください
中にNSMutableDictionaryのインスタンスを持っている独自クラスがあって
その中にどんなキーがあるかは不定です。
でそのインスタンスに対して
hoge.foo
のようにドットでプロパティを呼び出してNSMutableDictionaryのobjectForKeyにアクセスするようなことって出来ますか?
不定じゃなければそういうプロパティを作ってアクセッサを定義してやればイケそうな気もするけど・・
プロパティはコンパイル時の型チェックがあるのでダメそうな気がするんですが、見逃してることがあったら教えてください。
655:デフォルトの名無しさん
09/12/19 16:53:38
できます。コンパイル時にウォーニングはどうしてもでるとおもいますが。
a.foo=b は[a setFoo:b] と、
b=a.foo はb=[a foo] と等価なので、
[a foo] をダイナミックに [a objectForKey:@"foo"] にかえてやればいいですが、
それには forwardInvocation: を使えばいいです。
URLリンク(www.mikeash.com)
とか参照。
656:デフォルトの名無しさん
09/12/20 01:04:58
NSStringの中にxxx:yyyみたいな文字列が入ってます。
これからxxx、またはyyyを返すようなメソッドってないでしょうか?
xxxの中には:は含まれず、yyyの中には:が含まれている可能性があります。
要するの最初のコロンと、それ以降に文字を分けたいのです。
657:デフォルトの名無しさん
09/12/20 01:18:01
rangeOfRegexとsubstringWithRangeでどうにかしました・・・
658:デフォルトの名無しさん
09/12/20 01:19:11
NSScanner でググると良い
659:デフォルトの名無しさん
09/12/20 06:50:02
>>658
で?
660:デフォルトの名無しさん
09/12/20 07:18:18
>656-657と>659って同一人物なのか?
俺も普通にNSScannerでがりがりマッチング取ればいいだけ
だと思うんだが。
661:デフォルトの名無しさん
09/12/20 11:48:34
>>660
いえ、同一人物じゃないですw
回答くれた人にそんな失礼な返事しないですよw
NSScanner使ったことないので、調べてきます。
Objective-Cというかオブジェクティブ志向のプログラミングは初めて間もないんですが、
結構クラス調べるのは楽しいですね。もっといっぱい知りたい・・・
662:デフォルトの名無しさん
09/12/20 12:01:08
いいのかい?
俺はノンケでも構わず食っちまう男なんだぜ
663:デフォルトの名無しさん
09/12/20 12:17:39
いいよ
664:デフォルトの名無しさん
09/12/20 17:13:00
>>661
NSScanner でももちろん出来るけど、その目的ならNSString の
-(NSArray*)componentsSeparatedByString:(NSString*)separator
でやる方が楽かと。後ろは、NSArray の
-(NSArray*)subArrayWithRange:(NSRange)range で取り出して、
-(NSString*)componentsJoinedByString:(NSString*)separator で戻してやればいい。
665:デフォルトの名無しさん
09/12/20 22:04:58
>>655
メッセージ式で呼び出すときはウォーニングだけで済むと思うけど、プロパティ構文は静的に解決できないとエラーになると思う。だから、プロパティでやるのは無理なんじゃないかな。メッセージ式で書けばいい話だが。
666:654
09/12/20 22:36:59
>>655
ありがとうございます
遅レスすいません
別のところ(C言語で文字列の置換)でつまっていて、詳しくテストしてない状況です。ウォーニングはでるけどできるってことですね。試してみます。
リンク先も見てみます。ありがとうございます
667:デフォルトの名無しさん
09/12/21 22:46:44
キー値コーディングってどんなケースで使うんですかねぇ。
なんか普通のアプリで積極的に使う場面って想像つかないんですけど。
フレームワークの開発とかで使うのかな。
668:デフォルトの名無しさん
09/12/21 23:13:04
次の人が答えます
669:デフォルトの名無しさん
09/12/21 23:14:48
KVC はそれほど自分で直接呼ぶもんじゃないと思いますが、
Cocoa のいろんな部分 (KVO,バインディング) でランタイムが統一的に
オブジェクトを弄れるための下支えになってます
例えば、ソースコードで -foo と -setFoo: を定義しておくと
nib ファイルの中からビューをコントローラのキー foo に
バインドできますが、その間の通信は KVC でやってるわけです。
670:デフォルトの名無しさん
09/12/21 23:24:18
>>667
値が変更された通知が欲しいときに色々と使えるだろ。
たとえば、テキストフィールドが編集されたときに何かをしてみたり。
それから、特定のスクリプトを処理するときに、コードがかなり短くなる。
たとえば、自力でXMLをパースする、みたいなときは、大幅にソースが簡単になる。
まぁ、まずは日本語ドキュメントでも読め。
URLリンク(developer.apple.com)
671:デフォルトの名無しさん
09/12/21 23:31:30
結構奥が深そうですね...ちょっとずづでも探ってみまする。
672:デフォルトの名無しさん
09/12/21 23:32:42
>>667
一々 IBOutlet と Action をおいてセッターとゲッターを作るより、Interface Builder でどうこう出来る分生産性が上がる。
673:デフォルトの名無しさん
09/12/22 22:36:38
すみませんが、質問になります。
Objective-CからCのqsortを呼ぶ事ってできるのでしょうか?
第4引数をどうすればよいのか、途方にくれてます。
よろしくお願いします。
674:デフォルトの名無しさん
09/12/22 22:57:53
Cそのまんまだろ。それとも オブジェクトのメソッドでも突っ込む気か?
その場合は関数でラッパーすれば良いだけだけど。
675:デフォルトの名無しさん
09/12/22 23:18:33
qsort_b って関数もあるぞ
676:デフォルトの名無しさん
09/12/22 23:52:54
>>673
C の配列をソートするのなら、C そのままでしょ。
Objective-C のオブジェクトは、C配列にいれないほうがいいです。
NSString* a[10]; とか余程でなければ誰も使わないと思います... よね。
NSArray つかって、ソートするときは、
sortedArray... とかいうメソッドが一杯あるので。
677:デフォルトの名無しさん
09/12/22 23:58:01
>>674
ありがとうございます。そのまんまなんですね。
関数へのポインタを@selectorでとかやってたら、混乱してしまいました。
>>676
そうですか。Objective-Cが独特なんで、なるべく標準を使いたいと思ったりするんですけど、
やっぱり駄目ですかねー。
678:デフォルトの名無しさん
09/12/23 00:03:51
IMP とかそこら辺を学ぶと幸せになれるかも。
679:デフォルトの名無しさん
09/12/23 00:06:47
iPhone様々ですか?
680:デフォルトの名無しさん
09/12/23 00:08:51
>>877
Objective-C は C のスーパーセットだから。
C++ だって C でできる事はそのまま何でも出来るでしょ。
>そうですか。Objective-Cが独特なんで、なるべく標準を使いたいと思ったりするんですけど、やっぱり駄目ですかねー。
う〜ん、他の環境から Mac へ GUI だけ移植してるんなら、そういうのも判らなくないですが、
Mac / iPhone 用に一から書いてるなら諦めて Cocoa の使い方覚えたほうがいいと思います。
どうせ method の引数に文字列なら NSString, 配列なら NSArray を渡さないといけない事が
しばしばあるので、どうせ使い方覚えないといけなくなりますし。
681:654
09/12/24 02:08:22
すいません。すれ違いなんですけど,
多分ここの人が詳しそうなんで、質問させてください。
xcodeでC言語の勉強をしてて、日本語の処理でつまったので教えてください。
#include <wchar.h>
int main(void)
{
wchar_t str[] = L"日本語だよ";
printf("%s\n", str);
printf("%S\n", str);
printf("%c\n", str);
printf("%C\n", str);
wprintf(L"%s\n", str);
wprintf(L"%S\n", str);
wprintf(L"%c\n", str);
wprintf(L"%C\n", str);
return 0;
}printfでマルチバイトのも文字列をあつかうにはどうすれば良いのでしょうか?上のコードは全部文字化けか出力できませんでした。xcodeのコンパイラって基本的にはgccなんですよね?その辺の情報を調べて上のように試してみたんですけど。
基本的にはNSStringをつかうので必要ないといわれればそれまでなのですが。
お願いいたします
682:デフォルトの名無しさん
09/12/24 04:05:53
なんでココなんだよ。
自分でスレ違いって分かってるんだからC言語のスレ行けよw
そっちじゃいけない理由でもあるのか?
683:デフォルトの名無しさん
09/12/24 07:43:02
gcc の設定の問題で、Obj-C とも Mac と関係ない話だから、適切なところへ行ってくれ
684:デフォルトの名無しさん
09/12/24 12:58:46
はあ・・・低能さんって・・・
685:デフォルトの名無しさん
09/12/29 20:32:37
なんだか文法がいちいち長ったらしくて萎えるんですけど..
文字列比較すんのに
if ([a compare:b] != NSOrderedAscending) {
:
}
とか、めんどくせーし、英語に慣れてないとぱっとみどう比較してんのかわからんちゅーの。
VBだったら
if a >= b then
:
end if
ちょーシンプル。ほんと萎えるよ。英語が分る人には読み易いのかもしんないけどさ。はぁ...挫折しそ
686:デフォルトの名無しさん
09/12/29 20:45:32
>>685
そのVBの記述だとエンコーディング考慮出来ないじゃんw
C Stringで出来る所はそうすればいいし。そうでないところは
Foundationでやればいい。どちらも取れるんだから。
687:デフォルトの名無しさん
09/12/30 02:16:37
>>685
英語の勉強になると思って頑張ってください。
物事こころの持ちようですよ。
挫折したければ挫折しても良いんだし。
688:デフォルトの名無しさん
10/01/11 16:13:44
例えばオブジェクトAがあるオブジェクトBを中で生成(alloc)して帰す場合、そのオブジェクトBをreleaseするのはオブジェクトAの責任なんですよね?
で、そのオブジェクトBを配列で返すようなメソッドを書く場合
return [[NSArray alloc] initWithObjects:objectB, nil];
としてしまうと、だれが、このNSArrayをreleaseするのかってなっちゃいますよね?
つまり、この場合NSArrayもオブジェクトAのメンバ変数に保持しないといけないってことでしょうか?
689:デフォルトの名無しさん
10/01/11 18:31:22
つ autorelease
690:デフォルトの名無しさん
10/01/14 19:55:11
return [[[NSArray alloc] initWithObjects:objevtB, nil] autorelease];
とするか、
return [NSArray arrayWithObjects:objectB, nil];
とすべき。
691:デフォルトの名無しさん
10/01/15 08:48:56
関係ないけど、s無し単数形の -[NSArray initWithObject:]もあるよ。
692:デフォルトの名無しさん
10/01/16 21:17:35
最近 Objective-C 2.0 を始めたんですが、ガベコレについて質問です。
ガベコレって retainCount が 0 になったインスタンスを自動的に解放してくれるだけで、
retain, release によるメモリ管理は必要なんですよね?
NSAutoReleasePool でメモリ管理をしないでよくなった、という理解で良いでしょうか。
693:デフォルトの名無しさん
10/01/16 21:35:39
全然違う。
ルートとなるNSAppから芋づる式に参照されてる(到達可能な)オブジェクトを保持し、
関連が無くなったオブジェクトを自動的に始末するシステムです。
URLリンク(journal.mycom.co.jp)
参照カウントは使ってない。
694:デフォルトの名無しさん
10/01/16 21:39:39
C++は0xとか模索されてて鋭意進化中だけど、Objective-C は 3.0 が出来るとしたら、どんな拡張になるのかな?
695:デフォルトの名無しさん
10/01/16 22:34:26
特にこれといって欲しい機能もないしなあ。
名前空間くらいか。
696:デフォルトの名無しさん
10/01/17 00:17:01
無名関数、ラムダ式、ジェネリックは欲しい。
ちゅうかC++ 0x のコンパイラなんぞ実装するベンダーあるのかね。
IDE込みで考えると、かなり大変そうだけ。
697:デフォルトの名無しさん
10/01/17 00:21:47
詳しくは知らんのだが、ブロック構文はラムダ式の代わりにはならんの?
698:デフォルトの名無しさん
10/01/17 00:27:04
>>696
>無名関数、ラムダ式、
無名関数とラムダって違うの?
Blocks のクロージャじゃダメなの?
699:デフォルトの名無しさん
10/01/17 00:48:20
クロージャなんてものがあるのか。知らなかった。これ使いまくろ。
700:デフォルトの名無しさん
10/01/17 00:52:45
>>696
>ジェネリック
動的束縛な言語にジェネリックって必要か?
701:デフォルトの名無しさん
10/01/17 00:55:07
ジェネリック・プログラミングも、カテゴリを利用して出来るんじゃないの?
702:デフォルトの名無しさん
10/01/17 00:55:52
Blocksなんて機能あったんだ? 荻原本にも書いてないやんけ!
703:デフォルトの名無しさん
10/01/17 00:59:03
Dyna本にも書いてないよな、何故か知らないけど。
704:デフォルトの名無しさん
10/01/17 06:02:50
本にのってないのは、block は snow leopard からの機能だからでしょ。
Objective-C の拡張というよりは C そのものの拡張という
位置づけにしたいらしいよ、Apple は。
まあ多分ほかにどこも採用しないから、
実質 Objective-C の機能という認識になるとおもわれるが...
705:デフォルトの名無しさん
10/01/17 12:29:38
>696
フル実装はしばらくかかるかもしれないけど gcc も VC も既に機能の取り込みを始めてるし、
C99 と比べれば段違いだと思われ。
706:デフォルトの名無しさん
10/01/17 12:30:28
木下本が出たのは雪豹後だったはず。
707:デフォルトの名無しさん
10/01/17 13:17:37
>>706
違う。
708:デフォルトの名無しさん
10/01/17 13:19:15
>>706
あれは マイコミジャーナルに長期連載されてたのを
まとめただけだから仕方がないね
せめて 2.0 ランタイムについて一章だけでも付け加えてくれたらよかったんだが、
あれを買って 10.6 で実際にやってみようとしてはまってるひとが
ときどきこのスレやら新 mac 板の Cocoa スレにでますね
709:デフォルトの名無しさん
10/01/18 15:54:05
あるクラスが持つプロパティの属性をassignにするべきか、retainにするべきか、copyにするべきかで悩んでしまいます。
結局わからないから、とりあえずassignにしとけってことが多いです。
独立性の高いクラスの場合はretainで保持した方がいいのかなと思ったりするんですが...
何か指針みたいなものってあるんでしょうか? それとも経験的な勘でみなさん決めてらっしゃるんでしょうか?
710:デフォルトの名無しさん
10/01/18 16:28:23
最終的にどのタイミングで release されるか、を考えておくべき。
711:デフォルトの名無しさん
10/01/18 18:22:22
やっぱりオブジェクト型のプロパティはretainしてdeallocでreleaseしといた方が確実なんですかねぇ。
autoreleaseされたプロパティを渡される可能性もあるし。
となるとassignの使いどころって、数値型や文字列とかのプリミティブ型に対してってことになっちゃいますかねぇ...
copyは...ゔーん、まいっか。
712:デフォルトの名無しさん
10/01/18 18:31:54
>>711
delegate や target など、 retain にすると循環参照でリークする人が
出そうなものは少し考えたうえで assign にしたりする。
知らぬ間に内容を変更されたくないオブジェクトで、 retain で受けると
mutable string を渡したあとで中身を変更する人がいるかもしれないな、
などと心配する暇があるときは copy。
面倒なときはどっちも retain にしといて使う側が気を付けることにする。
713:デフォルトの名無しさん
10/01/18 19:08:42
あぁdelegateね、これは確かにサンプルとかみてもassignにしてあるのが多いですね。
まだ覚束ないですが、少し自分なりに整理できそうです。ありがとうございしました。
714:デフォルトの名無しさん
10/01/23 21:09:44
Xcodeって「¥」と「¥」(バックスラッシュ)って区別されてんのね。どおりで¥n入れても改行せんわけだわ。
715:デフォルトの名無しさん
10/01/24 00:09:40
XCode が、じゃなくて、標準のユニコードがそうなだけ
716:デフォルトの名無しさん
10/01/24 17:01:56
C と c は区別したーい
717:デフォルトの名無しさん
10/01/27 08:38:46
>>709
Google の Style Guide だと NSString なプロパティはとりあえず copy にしとけってことになってる
URLリンク(google-styleguide.googlecode.com)
718:デフォルトの名無しさん
10/01/27 13:16:24
Google は最早 Apple の敵だが、参考にしよう。
719:デフォルトの名無しさん
10/01/27 18:17:39
敵判定って空しくなるだけ。
720:デフォルトの名無しさん
10/01/28 20:30:17
Googleは、アップル製品をアク禁できるんだから、Googleに戦う気があったら勝負にならない。
721:デフォルトの名無しさん
10/01/30 18:30:28
- (int)hoge:(int)a;
みたいなメソッドを、performSelector:withObject: のように(SEL)と引数を与えて動かす方法ってないのかな?
int を NSNumber にするしかない?
722:デフォルトの名無しさん
10/01/30 19:31:34
>>721
面倒くさいが、NSInvocation を作って動かすとか。
id invocation = [NSInvocation invocationWithMethodSignature:
[piyo methodSignatureForSelector:@selector(hoge:)]];
int arg = 1;
[invocation setArgument:&arg atIndex:2];
[invocation invoke];
int rtn;
[invocation getReturnValue:&rtn];
723:デフォルトの名無しさん
10/01/30 19:34:24
ターゲット設定してなかった。[invocation setTarget:piyo] をやるか、
[invocation invokeWithTarget:piyo];
724:デフォルトの名無しさん
10/01/31 17:59:29
>>722-723
NSInvocation って以前見かけて、結局使い道が分からなくて放置してたクラスだけど、色々調べてみます。
ありがとう。
725:デフォルトの名無しさん
10/01/31 23:32:14
>>720
Macユーザのシェアがごっそりなくなるから無理だろうな。
726:デフォルトの名無しさん
10/02/01 22:47:01
それはぶっちゃけ言うほど痛くない
727:デフォルトの名無しさん
10/02/02 02:14:29
Google使えなくなったら大部分は乗り換えるだけ。
728:デフォルトの名無しさん
10/02/02 04:10:35
Google社員にもMac愛好家くさるほどいんのにそんな誰得の展開になるわけないだろ
使えなくしたらグーグルの勝ち〜とか発想が幼稚すぎるわ
おまえらなんでそんなに頭悪いの
とてもプログラミングできるような頭じゃないと思うんだがなんでこのスレにいんの
729:デフォルトの名無しさん
10/02/02 05:14:53
キミ凄いね
730:デフォルトの名無しさん
10/02/02 07:58:20
社員の趣味と企業戦略を一緒くたにして話す奴も大概頭悪いと思う
731:デフォルトの名無しさん
10/02/02 21:09:37
なんでプログラマやデザイナやミュージシャンとかクリエイティブなやつらにMac使いが多いか考えたことないだろ
Macを除外する企業戦略とかニートや低脳厨房の発想
732:デフォルトの名無しさん
10/02/02 21:20:13
理由は唯一つ
お洒落だからですが何か
733:デフォルトの名無しさん
10/02/02 21:55:20
プログラマはねーよww
734:デフォルトの名無しさん
10/02/02 22:03:39
(クリエイティブな)ブログラマってことだろ
735:デフォルトの名無しさん
10/02/02 22:54:44
>>731
デザイナーとミュージシャンにMacが多い理由は、割れの巣窟だったから。
写真屋とか、9割が違法コピーって言われてた。
736:デフォルトの名無しさん
10/02/02 22:57:15
開発環境がそっくり入ったUNIXマシンなんだからプログラマが選んでも
何の不思議も無いと思うが
737:デフォルトの名無しさん
10/02/02 23:39:43
Googleの中の人とか、Ruby on Railsの人とか、イケテルプログラマはMac使いが多いね。
738:デフォルトの名無しさん
10/02/02 23:45:06
Linus ってイケてたっけ?
739:デフォルトの名無しさん
10/02/02 23:45:47
PDFをネイティブにサポートしてるからPDFのドキュメントも読み易いしね。
あとLeopard以降は64bitアプリそのまま使えるから、64bit版OSインストール
し直しなんて手間も要らない。
740:デフォルトの名無しさん
10/02/03 00:07:30
MacはUNIXなんだから、ドザじゃないまともなプログラマはMac使う
741:デフォルトの名無しさん
10/02/03 00:21:08
犯罪者が必死だな。
742:デフォルトの名無しさん
10/02/03 00:42:40
あらやだ
くやしいんですね
だいじょうぶですよ
がんばって知能つけましょうね
743:デフォルトの名無しさん
10/02/03 00:46:49
カンファレンスや勉強会に行くと、もう過半数がMacだなぁ。
発表者なんか下手すると9割くらいMac。サポートがしょぼいはずのJava系ですら半分がMac。
個人的に、2kgを超えるモバイルマシンなんざありえねぇと思ってるので、正直理解できん。Airは中途半端すぎるし。
744:デフォルトの名無しさん
10/02/03 02:01:37
個々は GNUStep, Cocotron もふくめた Objective-C のスレですよ!
Mac の話題なんてとんでもない!ぷんすか
745:デフォルトの名無しさん
10/02/03 02:03:36
StepStone ってどうなったんだっけ?
746:デフォルトの名無しさん
10/02/03 02:09:05
>>745
NeXT が Objective-C の権利を買い取ったあともしばらく存続してたけど、
消滅したらしい
URLリンク(en.wikipedia.org)
747:デフォルトの名無しさん
10/02/03 10:40:00
プログラマは、技術的に面白い物は全部触ってみたくなる人種だ。
OSXとLinuxとWindowsが全部動くマシンがMacしかない以上、
他に選択肢は無い。
電話もiPhone持ちが大半だが、加えてAndroidも持ってたりするぞ。
748:デフォルトの名無しさん
10/02/03 14:03:23
複数持つだけ
全部動くからという理由じゃ選択しないよ
749:デフォルトの名無しさん
10/02/03 20:20:42
一人暮らしでもマシンが複数台あってLANでつながってるのが当たり前だと思うんだが。
750:デフォルトの名無しさん
10/02/03 20:23:22
最近は仮想マシンでも十分な性能が出るから、うちはハードは1台だよ。
751:デフォルトの名無しさん
10/02/03 21:08:12
はーどうしたどうした
752:デフォルトの名無しさん
10/02/04 13:31:58
>>750
新しい機種を導入するたびに前のは破棄してるのか
753:デフォルトの名無しさん
10/02/04 15:11:30
>>752
中古屋に売ってます
754:デフォルトの名無しさん
10/02/04 16:40:22
CocotronでWin用のアプリ作ってみたひといませんか?
実用的ならうれしい。
755:デフォルトの名無しさん
10/02/06 22:18:35
初心者です。質問させてください。
stringWithCStringを使うと、コンパイル時に
warning: ‘stringWithCString:’ is deprecated
がでました。
stringWithCStringの代わりに何を使うのがよいですか?
756:デフォルトの名無しさん
10/02/06 22:26:32
Xcodeのヘルプメニューからたどれるドキュメントを読みましょう。
またはメソッド名 (stringWithCString:) のところでOption+ダブルクリック
757:デフォルトの名無しさん
10/02/07 00:20:28
初心者はこのスレに来るな
758:デフォルトの名無しさん
10/02/07 00:31:21
え〜っ、なんで?
759:デフォルトの名無しさん
10/02/07 00:35:52
>>752
他人にあげたり、捨てたり、死蔵したり
>>755
>stringWithCStringの代わりに何を使うのがよいですか?
stringWithCString:encoding:
760:デフォルトの名無しさん
10/02/07 14:33:01
複数のPCがあっても仮想マシン導入して、前のは捨てるのか。
どのくらいのペースで買い替えてるんだろう。
うちはしょっちゅう買ってるから1人暮らしなのにPCは常時7〜8台あるわ
761:デフォルトの名無しさん
10/02/07 18:16:51
もはやPCを買うことが目的になってるな。
762:デフォルトの名無しさん
10/02/07 20:04:59
>>758
冗談でつ
でも質問が下らな過ぎてちょっとうんざりした。最近はドキュメント読まないゆとりが増えたのかなー。
763:デフォルトの名無しさん
10/02/08 01:52:54
>>762
うちはこないだ新人向けに調べ方の調べ方マニュアルを作ったな。
よくあるのがググる先生に頼りすぎて、ヘルプや付属ドキュメントを読まないとか。
764:デフォルトの名無しさん
10/02/08 02:42:50
調べ方マニュアルじゃなくて、
調べ方の調べ方マニュアル、なのか?それはメタだなぁ...
765:デフォルトの名無しさん
10/02/09 12:59:27
メタメタにしてやんよ
766:デフォルトの名無しさん
10/02/09 14:39:02
お願いします。
767:デフォルトの名無しさん
10/02/09 15:28:42
メメタァ
768:デフォルトの名無しさん
10/02/09 18:00:04
うわあああああぁぁぁああああ!!!
769:デフォルトの名無しさん
10/02/09 18:32:17
バルス
770:デフォルトの名無しさん
10/02/09 18:44:24
ふぅ..
771:デフォルトの名無しさん
10/02/15 02:45:53
Objective-C入門3日目の初心者です。
フォルダのファイル一覧を、とりあえずコンソールに出してみようとしています。
本やWebを参考にして次のようなコードを書いたのですが、エラーがありうまくいきません。
添削していただけないでしょうか。
初心者は来るなってことだったのですが、
Objective-C初心者はどのあたりにいけばよいでしょう?
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSString *rootpath = @"/Public";
BOOL result = YES;
NSArray *contents = [[NSFileManager defaultManager] directoryContentsAtPath:rootpath];
int i;
for (i = 0; i < [contents count]; i++) {
NSString *name = [contents objectAtIndex: i];
NSString *path = [dirPath stringByAppendingPathComponent:name];
BOOL isDir;
NSLog(@"\n%@", path);
}
return 0;
}
772:デフォルトの名無しさん
10/02/15 03:13:08
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
NSString *rootpath = [NSHomeDirectory() stringByAppendingPathComponent : @"Public"];
NSArray *contents = [[NSFileManager defaultManager] directoryContentsAtPath : rootpath];
for (NSString *name in contents)
NSLog(@"%@", [rootpath stringByAppendingPathComponent : name]);
[pool release];
return 0;
}
773:デフォルトの名無しさん
10/02/15 09:47:18
一見して良いように見えるが、どんなエラーがでるの?
僕らだってエスパーじゃないから、「エラーがでます」じゃわからんよ。
コンパイルエラーならコンパイルエラーを書き写してもらわんと困るし、
実行時のエラーならどんなエラーなのか書いてください。
「エラーがでます」とだけここに書き込むのは、
エラーが出て、エラーメッセージを解読する気がないという気がします
それではプログラムは上達しませんよ。
単に ~/Public になんもファイルがないだけでは、と言う気がします。
774:デフォルトの名無しさん
10/02/15 10:58:25
>>772
おお。ありがとうございました。
早速実行したところ、
warning: 'directoryContentsAtPath:' is deprecated (declared at /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSFileManager.h:164)
と警告が出てビルドできませんでした。
これは、どこを見ればよいのでしょう?
というか、NSFileManager.hの164行なんだと思うので、
見たところ、
- (NSArray *)directoryContentsAtPath:(NSString *)path DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
という行でした。
NSString *rootpath = [NSHomeDirectory() stringByAppendingPathComponent : @"Public"];
NSString *rootpath = [[@"~" stringByExpandingTildeInPath] stringByAppendingPathComponent : @"/Public"];
などいくつか試したのですが、どうしてもうまくいきません。
775:デフォルトの名無しさん
10/02/15 11:56:23
英和辞書をお奨めする
776:デフォルトの名無しさん
10/02/15 12:29:09
雑談と初心者いじりしかやらないよねMac系の開発スレって
777:デフォルトの名無しさん
10/02/15 12:57:21
このレベルから教えるのは正直きっついな
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5404日前に更新/248 KB
担当:undef