Objective-C [ObjC pa ..
[2ch|▼Menu]
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
このレベルから教えるのは正直きっついな

778:デフォルトの名無しさん
10/02/15 13:17:01
警告だからコンパイルは一応通ってるんじゃないの?
OS 10.5以降は非推奨メソッドだから使わないでねって警告なんじゃないの?

779:デフォルトの名無しさん
10/02/15 14:01:11
>>774
コンソールを表示してみ。

> ビルドできませんでした。

嘘付かないでね。

780:デフォルトの名無しさん
10/02/15 14:10:21
>>776
これがわからないってことは、リファレンスどころか警告すら読めてないってことでしょう。
その状態でObj-Cで開発やるのはかなり厳しいよ。

で、「(やる気があるのなら)英和辞書をお奨めする」ってことなんだけどな。

それとも警告出るたびに聞きに来るの?

781:デフォルトの名無しさん
10/02/15 14:31:03
そういうレスだけは饒舌だなw

782:デフォルトの名無しさん
10/02/15 15:24:34
まぁまぁ^^;

783:デフォルトの名無しさん
10/02/15 18:49:27
むしろ
「Cocoaスレに行け」とか
「Mac プログラミングスレに行け」
って言われなかったのが奇跡だな…
# Foundation Framework ネタはどこが適切なんだろ…?

784:デフォルトの名無しさん
10/02/15 18:58:27
内容ジャンル的にはここでも問題ないと思うが、このレベルの無知無知初心者を相手にするのも大変だろう。

785:デフォルトの名無しさん
10/02/15 19:04:11
deprecatedはもうすぐなくなるよってこと。今はまだある。
これはすごく親切な警告。

なのでdirectoryContentsAtPath:をopt+ダブルクリックしてみる。リファレンスが表示される。

Special Considerations
Because this method does not return error information, it has been deprecated as of Mac OS X v10.5. Use contentsOfDirectoryAtPath:error: instead.

って書いてあるので代わりに
contentsOfDirectoryAtPath:error:
を使う。


786:デフォルトの名無しさん
10/02/15 19:05:44
調べ方教えたんだから同じ内容ではもう来るなよ

787:デフォルトの名無しさん
10/02/15 19:44:43
>>775-786
まあそうおっしゃらずに、
もうすこしおつきあいいただけないでしょうか。

さきほどのファイル一覧は、あらためてプロジェクトを作り直したら、問題なく動きました。
一覧も取得できました。

失敗したときは、まだトライ&エラーの段階なので、
ひとつのプロジェクトのソースを全選択して、
消しては新しいソースを貼りつけて、
実行していたのです。

ソースじたいは変更していないのですが、
ともあれお騒がせしました。

で、次なのですが、いちおう辞書片手に読んでますけど、
(1)デバッグ中に変数に代入されているデータを見る方法
(2)コンソールコマンドから、テキストエディタとかのGUIアプリケーションを実行できるのか?
の2点を教えていただけないでしょうか。

(1)ブレークポイントを設定してみるものの、
そのデータが具体的になになのか、確認するには、
どこのメニューでどれを見ればよいのでしょう?

(2)ソースは次のとおりで、実行すると、デバッガコンソールでいろいろ表示したあと、
(gdb)というモード? になり、期待していたように、
テキストファイルをテキストエディタで表示はしませんでした。

そもそもこういう方法で、外部のアプリケーションを起動できるんでしょうか?
アドバイスお願いします。


788:デフォルトの名無しさん
10/02/15 19:46:20
#include <Foundation/Foundation.h>

int main() {
NSTask *noteTask = [[NSTask alloc] init];
NSMutableArray *noteArgs = [NSMutableArray array];

NSString *path;
path =[[NSHomeDirectory()
stringByAppendingString:@"Public/tmp.m"];

// configure note
[noteArgs addObject: path];
[noteTask setLaunchPath: @"/Applications/TextEdit.app/Contants/MacOS/TextEdit"];
[noteTask setArguments: noteArgs];

// launch applications
[noteTask launch];

// wait applications
return 0;
}


789:デフォルトの名無しさん
10/02/15 20:03:01
>>787
(1)
ブレークポイントで停止したら適当な変数名にカーソル合わせる
またはデバッガコンソールで p コマンドか po コマンド使う
p は C の基本データ型、 po は ObjC のオブジェクトの内容を表示する
p intVar
po object
po [object value]
てな具合
あとは help コマンドで調べて

(2)
>[noteTask setLaunchPath: @"/Applications/TextEdit.app/Contants/MacOS/TextEdit"];
Contants じゃなくて Contents な
「いろいろ表示」された中に手掛かりが書いてある、ちゃんと読めよ

790:デフォルトの名無しさん
10/02/15 22:17:46
親切だなぁ

791:デフォルトの名無しさん
10/02/15 22:27:00
>>789
ありがとうございました。


792:デフォルトの名無しさん
10/02/18 23:36:01
Objective-C気持ち悪い

793:デフォルトの名無しさん
10/02/18 23:48:27
テキストフィールドに入っている文字のバイト数が一定値以上だったらエラーを出したいのですが

NSLog(@"OK %d", MAX_TITLE_LENGTH-strlen([[tfThreadTitle text] cStringUsingEncoding:NSShiftJISStringEncoding]));

if(MAX_TITLE_LENGTH-strlen([[tfThreadTitle text] cStringUsingEncoding:NSShiftJISStringEncoding])<0)
{
  NSLog(@"haitta");
  return;
}

その一定値を超えてもこのif文に入ってくれません。
NSLogで数値の確認をしてみたのですが、-2となっているのにも関わらず、
直後のif文の判定を素通りしているようです。何が原因なのでしょうか。。助けてください。。

794:デフォルトの名無しさん
10/02/19 01:12:12
>>793
NSStringのUTF8Stringを使ってconst char *型の文字列の先頭ポインタを取得して使う。

795:デフォルトの名無しさん
10/02/19 01:55:56
>>793
strlen の戻り値は符号なしだから、> の左辺はマイナスにならないよ。
if (strlen(...) > MAX_TITLE_LENGTH)
と書くべき。C 言語からやり直しだね。  

796:デフォルトの名無しさん
10/02/19 02:25:05
>>794-795
ひゃあ、ありがとうございます。
strlenの戻り値はunsignedなんですね。。。
ありがとうございました。

797:デフォルトの名無しさん
10/02/19 06:08:41
NSString*を返り値として返す関数があるのですが、

NSString* func()
{
NSString *str = [[NSString alloc] initWithFormat:@"%d", 1];
return str;
}

例えばこういう場合って、どうすればいいのでしょうか?
releaseしたらreturnできませんし、returnしたらreleaseできませんよね?

798:デフォルトの名無しさん
10/02/19 06:25:45
>>797
まさにそういう時のためにautoreleaseがあるのだよ

799:デフォルトの名無しさん
10/02/19 08:16:29
お〜autorelease!!
ありがとうございます!
[[[NSString alloc] initWithFormat:@"%d", 1] autorelease];
でいいんですよね!ありがとうございますっ!

800:デフォルトの名無しさん
10/02/19 08:23:43
この場合stringWithFormatもあるけどな。

801:デフォルトの名無しさん
10/03/03 23:55:05
iPhone作りたいんですけど、なにせwin野郎なんでMac全然勝手が分かりませんw
とりあえずiPhone用の開発環境揃えたいんですけど、お勧めセット一式誰かお願いできますか?
あと、windows系とのネットワークファイル共有って簡単にできるでしょうか?

802:デフォルトの名無しさん
10/03/03 23:57:28
まだ、ソフトもハードも無いので、勧めセット一式はソフトハードセットでお願いできるとありがたいです。

803:デフォルトの名無しさん
10/03/04 00:00:59
スレ違い。死んでくれ。

804:デフォルトの名無しさん
10/03/04 00:01:26
Objective-C気持ち悪い

805:デフォルトの名無しさん
10/03/04 00:03:08
じゃあ Objective-C は代わりにおじさんがやっておくわ

806:デフォルトの名無しさん
10/03/04 00:04:27
Appleて、現代的な言語作ってないんだよな

807:デフォルトの名無しさん
10/03/04 00:05:47
ObjC が最強過ぎるからな

808:デフォルトの名無しさん
10/03/04 00:11:26
Objective-Cなんて糞は正直触りたくない

809:デフォルトの名無しさん
10/03/04 00:15:36
代わりに俺が触っておくから、寝てて良いよ

810:デフォルトの名無しさん
10/03/04 00:19:24
お前に触られるぐらいなら死んだ方がまし

811:デフォルトの名無しさん
10/03/04 00:21:25
いや、お前を触るわけじゃねえw

812:デフォルトの名無しさん
10/03/04 00:25:01
>>803-811
マジ頭おかしいんじゃね、お前ら
樹海にいって首つって死ね

813:デフォルトの名無しさん
10/03/04 00:26:21
iPhone作りたいんですけど、なにせwin野郎なんでMac全然勝手が分かりませんw
とりあえずiPhone用の開発環境揃えたいんですけど、お勧めセット一式誰かお願いできますか?
あと、windows系とのネットワークファイル共有って簡単にできるでしょうか?
まだ、ソフトもハードも無いので、勧めセット一式はソフトハードセットでお願いできるとありがたいです。


814:デフォルトの名無しさん
10/03/04 00:26:55
>>802
ソフトは登録してダウンロードするだけだよ
ハードは現行機種なら何でも良いけど、メモリ多めの方が何かと良いよ

815:デフォルトの名無しさん
10/03/04 00:34:15
>>801-813
このスレ荒らして何の得がある……

816:デフォルトの名無しさん
10/03/04 01:28:26
>>813
iPhone作りたいなら中国の工場に就職しろ

817:デフォルトの名無しさん
10/03/04 01:57:20
>>813
こんな質問してるくらいだから、多分無理なんだろうな。
下手に教えないほうがいいぞ。手を出し始めたらこのスレがくだらない質問であふれかえってしまう。

818:デフォルトの名無しさん
10/03/04 02:48:17
>>813
MacProとCinemaDisplayオススメ
あとFinalCutStudioとLogicかな。
なんやかや結局揃えるハメになるので最初にまとめて買っておくが吉。
ノートで十分とか言う奴がたまにいるが、デスクトップだとアプリのビルド時間が断然早く作業効率が非常に良い。
Windowsとの共有は簡単にできるよ。

819:デフォルトの名無しさん
10/03/04 13:30:42
とりあえずインテルのMac mini買えばあとはオンラインで全部そろう
それでエミュレーションで動かしてから考えるといいんじゃないかな

820:デフォルトの名無しさん
10/03/04 15:41:41
>>818
どもどもです、とりあえずそれでいってみようかと思います。
リソースの編集もMac側でやった方が効率いいですかね?
コードだけそっちで作ってみようかと目論んでいたのですが・・・

821:デフォルトの名無しさん
10/03/04 16:16:18
>>820
どっちでもいい。
あと最初にしっかりガンマ特性や色温度の管理うぃやっておけば、
実機で印象が変わったりジャギーが目立つ等の問題も避けられる。
(ある程度までは、だけど)

822:デフォルトの名無しさん
10/03/05 17:22:02
>>818
アプリのビルド時間が早くなるって、どういうことだ?

823:デフォルトの名無しさん
10/03/05 18:21:28
マシンの性能差だろ。

824:デフォルトの名無しさん
10/03/07 01:53:25
iPhone用のアプリを作っていますが、NSDictionaryの使い方で悩んでいます。

以下の1行で、プログラムの実行が異常終了してしまいますが、理由がわかりません。どなたかヒントをいただけませんか?

sControls = [NSDictionary dictionaryWithObjectsAndKeys: display1, card1, display2, card2, display3, card3, display4, card4,nil];

ただし、
IBOutlet UILabel *display1;
IBOutlet UIButton *card1;
IBOutlet UILabel *display2;
IBOutlet UIButton *card2;
IBOutlet UILabel *display3;
IBOutlet UIButton *card3;
IBOutlet UILabel *display4;
IBOutlet UIButton *card4;
です。

最初は、card1〜card4のいずれかがnilで、その結果NSInvalidArgumentExceptionが起きているのでは?とデバッガで値を検査しましたが、そうではありませんでした。


825:デフォルトの名無しさん
10/03/07 01:55:31
デバッガのコンソールメッセージは以下の通りです。
よろしくお願いします。

2010-02-24 00:15:27.446 XXXXXXXXXXX[69972:207] *** -[UIRoundedRectButton copyWithZone:]: unrecognized selector sent to instance 0x3b14a50
2010-02-24 00:15:27.447 XXXXXXXXXXX[69972:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIRoundedRectButton copyWithZone:]: unrecognized selector sent to instance 0x3b14a50'
2010-02-24 00:15:27.449 XXXXXXXXXXX[69972:207] Stack: (
29258843,
2531099913,
29640763,
29210230,
29062850,
28990666,
28990186,
28988857,
10209,
3209026,
9269,
2692555,
2730422,
2718516,
2700927,
2728033,
37354841,
29043584,
29039688,
2694677,
2731951,
9184,
9038
)


826:デフォルトの名無しさん
10/03/07 03:14:30
一旦MutableDict 作って、一個ずつKey と Objectを設定してみろ。

827:デフォルトの名無しさん
10/03/07 03:44:06
>>824
keys must conform to the NSCopying protocol

828:デフォルトの名無しさん
10/03/07 19:35:03
メソッド名を良く読めって話だな。割と罠ポイントだとは思うがw

829:デフォルトの名無しさん
10/03/18 02:05:24
もうvisual studioもeclipseも触りたくない。

830:デフォルトの名無しさん
10/03/18 10:14:51
そんなあなたにNetBeans

831:デフォルトの名無しさん
10/03/20 09:23:49
URLリンク(live.nicovideo.jp)

832:デフォルトの名無しさん
10/03/20 09:43:57
ニコ厨死ねよ

833:デフォルトの名無しさん
10/03/20 23:17:05
口半開きってやっぱダメだな

834:デフォルトの名無しさん
10/03/22 18:03:17
あの、ポインタに対して使う * っていうのは、内容を複製して渡すのでしょうか?

例えば、NSTextField* field があったとして、

isnumber(*[field.text UTF8String])

としたとしますよね。この場合、[field.text UTF8String] だけで渡そうとすると
ポインタだからダメ、みたいな感じで怒られますが、*を付けるという事は
その中身を渡すという事ですよね?

中身を渡すというのは、そのポインタが指す中身を複製してその関数に渡して
いるのでしょうか?

質問がうまく伝わっていなかったらすみません。どうも中身を渡すというのが
どういう意味なのかがよく分からなくて…。Objective-C 以前に C が分かって
いないのでおかしな事を言っていたらすみません。

835:デフォルトの名無しさん
10/03/22 18:05:36
すいません、NSTextField -> UITextField の間違いでした。

836:デフォルトの名無しさん
10/03/22 18:54:43
>>834-835
Cは(Objective-Cも)値渡しだから、ポインタだろうがなんだろうが
渡すときは常に中身がコピーされる。
ポインタを渡したときは、コピーされるのはポインタの値だから
中身はコピーされないな。
中身を渡したら中身がコピーされるだろう。

837:デフォルトの名無しさん
10/03/22 18:56:42
>>836
中身っつうか、渡したものが常にコピーされるってことね。
分かりにくかったらすまん。

838:デフォルトの名無しさん
10/03/22 20:18:47
>>834
>あの、ポインタに対して使う * っていうのは、内容を複製して渡すのでしょうか?
合ってる、けど「中身」が何であるか勘違いしないように

[field.text UTF8String] は char * を返すんだが、この場合の中身は
先頭の1文字であって文字列全体じゃないからな

839:834
10/03/23 16:42:01
>>836
ありがとうございます。

ポインタを渡したらそのポインタの値がコピーされるという事ですよね。

>>838
ありがとうございます。

そうそう、そこも不思議だったんですよね。実際に isnumber はどう
処理しているのでしょう?アドレスに1ずつ足していきながら NULL 文字
がくるまでを文字列と判断するのでしょうか?

ソースを探したんですが見つからなくて…。

840:デフォルトの名無しさん
10/03/23 17:52:23
isnumber が扱うのは「(所謂)文字列」ではなく「文字」だよ。

841:デフォルトの名無しさん
10/03/23 22:07:21
>>839
>アドレスに1ずつ足していきながら
「文字列」(char *、つまり連続した文字の先頭へのポインタ)を受け取る関数についてはその通り
ただ isnumber は >>840 が言うとおり「文字」(char)を受け取って、
その1文字が数字どうかを判別する

842:デフォルトの名無しさん
10/03/23 22:59:21
>>840, 841
げげっ!そうなんですね、という事は、何らかの NSString が数値として
解釈できるかどうかは、何か別の方法で判定しなくてはいけないという事ですね。

Objective-C というよりは Cocoa っぽい話題で申し訳ないですが、皆さんは
ある NSString が数値として解釈できるかどうかはどの様に判定していますか?

843:デフォルトの名無しさん
10/03/23 23:19:09
NSNumberFormatter ?

844:デフォルトの名無しさん
10/03/23 23:20:20


845:デフォルトの名無しさん
10/03/24 00:04:21
>>843
NSNumberFormatter 使ってみたんですが、例えば aiu6 とかが蹴られるのは
いいんですが、6aiue とかやると解釈されちゃうんですよね。

厳密モードみたいなものがあるのかと思ったんですがないし…。

正規表現とかでやるしかないんでしょうか。と思ったら Cocoa には正規表現を
するためのクラスがないんですね、ガーン…。困った…。

846:デフォルトの名無しさん
10/03/24 06:32:26
ogrekit

847:デフォルトの名無しさん
10/03/24 12:31:40
-[NSNumberFormatter getObjectValue:forString:range:error:]
が使えるんじゃないかな。

自分は libc の strtol() 系で事足りてるから使ったことないけど。

848:デフォルトの名無しさん
10/03/24 22:49:40
sscanf()のObjective-C版が欲しいと思ったことありませんか?

UTF-8が処理出来るとかなり違うかと思うのですが。

849:デフォルトの名無しさん
10/03/24 22:51:07
NSScanner

850:デフォルトの名無しさん
10/03/25 01:53:35
>>847
やってみたんですが、やはり 0aiu みたいなものは解釈されてしまうみたいですね。
しょうがないので、数値かどうかを判断する関数を作り、とりあえずそこで数値と
判断したものだけ実際に数値に変換させる様にしました。

どうもおさわがせしました。でもなんか楽しいですね、Objective-C を頑張って
覚えたいです。

851:デフォルトの名無しさん
10/03/25 13:48:33
>>850
range:

852:デフォルトの名無しさん
10/03/25 15:06:47
-getObjectValue:...より簡単な-numberFromString: は使ってみたか?
自分の環境では6aiueはNULLを返す。
厳密モード的な動作は -setLenient: で切り替えられると思うが,NSNumberFormatterのAPIページくらい目を通したか。
ただ6aiueの解釈には影響ないみたいだが。
あるいはgetObjectValue:...を使いたいなら >>650 の通りだな。

853:834
10/03/25 18:27:08
>>852
ありがとうございます。

もちろん numberFromString は使ってみたのですが、普通に
数値として返ってきてしまうので困っていました。

setLenient も指定してみましたが、効果がありませんでした。

やり方がいけなかったんですかね…。家に帰ってもう一度やってみます。

854:デフォルトの名無しさん
10/04/02 09:20:21
shouldNotImplement: や notImplemented: って、
may not respond to '-notImplemented:'
ではなくするには何をインポートすれば良いんだ?

#import <objc/Object.h>
やっても意味無いようだけど。

当方OSX 10.6。


855:デフォルトの名無しさん
10/04/02 12:25:59
>>854
- (id)hogehoge {
return [self notImplemented:nil];
}

こうなってんじゃないの?
子クラスで -hogehoge を再定義すれば

856:デフォルトの名無しさん
10/04/02 15:27:23
>>855
? いや、
- (void)hoge {
[self notImplemented: _cmd];
}
をエラー無くビルドしたいんだけど。notImplementedされてるクラスを云々じゃなくて、自分でnotImplementedしたいんだ。
今クラスクラスタ作ってるところで。

857:デフォルトの名無しさん
10/04/03 02:16:08
>>856
ああすまん
自分で空の -(void)notImplemented: を定義すりゃいいんじゃね

858:デフォルトの名無しさん
10/04/05 00:45:54
NSArray* array = [NSArray arrayWithObjects:@"a",@"b",@"c",NULL];

みたいな、オブジェクトをカンマで区切って複数指定できるメソッドって、
定義する側ではどう書くのでしょうか?

もしや、カンマで区切って繋げると自動的に NSArray に変換してくれたり
しているんでしょうか??

859:デフォルトの名無しさん
10/04/05 01:45:11
可変長引数でググレカス。

URLリンク(developer.apple.com)

あと Foundation クラスの実装例が見てみたいなら CF や libFoundation のソースでも読んどけ。
URLリンク(www.google.com)

860:デフォルトの名無しさん
10/04/05 02:30:46
先生、「可変長引数」という単語を知らない人はどうなりますか…。

という冗談は置いておきまして、ありがとうございました。

ただ、可変長引数という単語で検索してもほとんどきちんと解説している
サイトってないですね…。「va_list」とか「va_start」とか一体何者なのか
分かりませんし…。まぁとにかくそのあたりから調べてみる事にします。

ありがとうございました。

861:デフォルトの名無しさん
10/04/05 12:54:31
これだからゆとりは

862:デフォルトの名無しさん
10/04/05 13:26:03
ダイナミック本ってどうなの

863:デフォルトの名無しさん
10/04/05 15:20:27
索引付いてないし装丁も粗いし、Webの奴読んでりゃ良いと思うよ。

864:デフォルトの名無しさん
10/04/06 18:52:14
最近のプログラマーはやった物勝ちなんだな

865:デフォルトの名無しさん
10/04/14 14:39:34
objc2 runtime 関数 const char *class_getIvarLayout(Class cls); について質問です。
この layout というのは、どういうものなのでしょうか?
ソースコードを調べていくと、objc-runtime-new.h に
class_t 構造体->class_rw_t 構造体->class_ro_t 構造体->uint8_t *ivarLayout
となっていて uint8_t*型だとわかりましたが、何の値を示すものなのでしょう?
よろしくお願いします。


866:865
10/04/14 15:44:41
解決には至っていませんが… objc-layout.m に GC につかうもの、っぽいことが
書いてあります。が、いまいちどうなっているのかよく分からないので、
ご存知の方がいらしたら、ご教示お願いいたします。
/**********************************************************************
* Object Layouts.
*
* Layouts are used by the garbage collector to identify references from
* the object to other objects.
*
* Layout information is in the form of a '¥0' terminated byte string.
* Each byte contains a word skip count in the high nibble and a
* consecutive references count in the low nibble. Counts that exceed 15 are
* continued in the succeeding byte with a zero in the opposite nibble.
* Objects that should be scanned conservatively will have a NULL layout.
* Objects that have no references have a empty byte string.
*
* Example;
*
* For a class with pointers at offsets 4,12, 16, 32-128
* the layout is { 0x11, 0x12, 0x3f, 0x0a, 0x00 } or
* skip 1 - 1 reference (4)
* skip 1 - 2 references (12, 16)
* skip 3 - 15 references (32-88)
* no skip - 10 references (92-128)
* end
*
**********************************************************************/

867:デフォルトの名無しさん
10/04/14 22:29:58
コメントを読んだ感じだと、
あるオブジェクトが他のオブジェクトを参照するのに使っているポインタ領域が
どのオフセット位置にあるのかを表しているように読める。
例として書いてある { 0x11, 0x12, 0x34, 0x0a, 0x00 } だと、
各々の上位ニブル(= 4 ビット)分スキップしてと下位ニブル分だけワードを読むことになっているので、
まず、 0x11 で 1 ワードスキップして 1 ワード見る
次に 0x12 で 1 ワードスキップして 2 ワード
0x3f で 3 ワードスキップして 0xf = 15 ワード
0x0a で現在のワードから(= 0 ワードスキップ)10 ワード見る。
0x00 = '¥0' で終端。
1 word = 4 byte = 32 bit で、オフセットが 4, 12, 16, 32-128 の位置のワードが表されている。
このメモリレイアウトに従ってメモリ領域を見ればオブジェクトの参照関係がわかる。
という感じかなあ。 Ivar は Instance Variable の略じゃないかと。
GC については最近出た本を参照。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5405日前に更新/248 KB
担当:undef