[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 12:16 / Filesize : 248 KB / Number-of Response : 975
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Objective-C [ObjC part:4];



1 名前:デフォルトの名無しさん [2009/04/15(水) 00:11:00 ]
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より)

Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/

Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/

Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html

776 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 12:29:09 ]
雑談と初心者いじりしかやらないよねMac系の開発スレって

777 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 12:57:21 ]
このレベルから教えるのは正直きっついな

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

779 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:01:11 ]
>>774
コンソールを表示してみ。

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

嘘付かないでね。

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

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

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

781 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:31:03 ]
そういうレスだけは饒舌だなw

782 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:24:34 ]
まぁまぁ^^;

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

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



785 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:05:44 ]
調べ方教えたんだから同じ内容ではもう来るなよ

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

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

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

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

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

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

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

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


788 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 22:17:46 ]
親切だなぁ

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


792 名前:デフォルトの名無しさん [2010/02/18(木) 23:36:01 ]
Objective-C気持ち悪い

793 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:12:12 ]
>>793
NSStringのUTF8Stringを使ってconst char *型の文字列の先頭ポインタを取得して使う。



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

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

797 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 06:08:41 ]
NSString*を返り値として返す関数があるのですが、

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

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

798 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 06:25:45 ]
>>797
まさにそういう時のためにautoreleaseがあるのだよ

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

800 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 08:23:43 ]
この場合stringWithFormatもあるけどな。

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

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

803 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:00:59 ]
スレ違い。死んでくれ。

804 名前:デフォルトの名無しさん [2010/03/04(木) 00:01:26 ]
Objective-C気持ち悪い



805 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:03:08 ]
じゃあ Objective-C は代わりにおじさんがやっておくわ

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

807 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:05:47 ]
ObjC が最強過ぎるからな

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

809 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:15:36 ]
代わりに俺が触っておくから、寝てて良いよ

810 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:19:24 ]
お前に触られるぐらいなら死んだ方がまし

811 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:21:25 ]
いや、お前を触るわけじゃねえw

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

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


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



815 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:34:15 ]
>>801-813
このスレ荒らして何の得がある……

816 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:28:26 ]
>>813
iPhone作りたいなら中国の工場に就職しろ

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

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

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

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

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

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

823 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:21:28 ]
マシンの性能差だろ。

824 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 03:14:30 ]
一旦MutableDict 作って、一個ずつKey と Objectを設定してみろ。

827 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 03:44:06 ]
>>824
keys must conform to the NSCopying protocol

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

829 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 02:05:24 ]
もうvisual studioもeclipseも触りたくない。

830 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 10:14:51 ]
そんなあなたにNetBeans

831 名前:デフォルトの名無しさん [2010/03/20(土) 09:23:49 ]
live.nicovideo.jp/watch/lv13400073

832 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 09:43:57 ]
ニコ厨死ねよ

833 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:17:05 ]
口半開きってやっぱダメだな

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

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

isnumber(*[field.text UTF8String])

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

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

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



835 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 18:05:36 ]
すいません、NSTextField -> UITextField の間違いでした。

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

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

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

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

839 名前:834 mailto:sage [2010/03/23(火) 16:42:01 ]
>>836
ありがとうございます。

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

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

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

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

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

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

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

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

843 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:19:09 ]
NSNumberFormatter ?

844 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:20:20 ]




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

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

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

846 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 06:32:26 ]
ogrekit

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

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

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

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

849 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:51:07 ]
NSScanner

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

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

851 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 13:48:33 ]
>>850
range:

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

853 名前:834 mailto:sage [2010/03/25(木) 18:27:08 ]
>>852
ありがとうございます。

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

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

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

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

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

当方OSX 10.6。




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

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

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

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

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

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

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

859 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 01:45:11 ]
可変長引数でググレカス。

developer.apple.com/mac/library/qa/qa2005/qa1405.html

あと Foundation クラスの実装例が見てみたいなら CF や libFoundation のソースでも読んどけ。
www.google.com/codesearch/p?#_rn0kgFhkQA/redir/sope/55519/url_tgz/sope-4.5.4-nevermind-r878.tar.gz|EGqseItem4o/sope/libFoundation/Foundation/NSArray.m

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

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

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

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

861 名前:デフォルトの名無しさん [2010/04/05(月) 12:54:31 ]
これだからゆとりは

862 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 13:26:03 ]
ダイナミック本ってどうなの

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

864 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 18:52:14 ]
最近のプログラマーはやった物勝ちなんだな



865 名前:デフォルトの名無しさん mailto:sage [2010/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 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 については最近出た本を参照。

868 名前:865 mailto:sage [2010/04/15(木) 20:40:07 ]
>>867
「ニブルの上位下位」のところがよく分からなかったんですが、なるほど、
そういう意味だったんですね。分からなかった「ニブル」の意味も何となく
分かりました。ありがとうございます。
もう一つお教えください。GC についてですが、最近新しい本が出たのでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 20:56:05 ]
> 868
byte : 8 bit
nibble: 4 bit

これはbyte -> bite (かじる)にひっかけて
「ちょこっとかじる」という意味のnibbleをbyteの半分を
指す様になった。 ほとんど冗談の様なネーミング。 


870 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:06:47 ]
じゃあニブルはニップルをかじってるのか

871 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:06:49 ]
英語版のwikipediaによると、bite->byteにひっかけて
nybbleとスペルしたり、かならずしも4bitではなくて
5bitや6bitに使われた場合もあったそうだ。 また、
用語の起源はIBMのメインフレームらしい。

en.wikipedia.org/wiki/Nibble


872 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:09:17 ]
byte -> bite じゃなくて
bite -> byte だよね
bite が byte の語源

873 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 21:13:07 ]
継手のニップルってそのまま形から来てるのか

874 名前:865 mailto:sage [2010/04/15(木) 21:14:47 ]
>>869
レスありがとうございます。
その話、何かで見たことがありました!完全に忘れていましたが・・・
おかげでもう忘れない気がします(笑)



875 名前:865 mailto:sage [2010/04/15(木) 21:16:46 ]
あれ、書いてるうちに… みなさん、ありがとう。

876 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 23:49:00 ]
>>868
GC の本っていうのは ttp://www.amazon.co.jp/dp/4798025623 のこと
オブジェクトの参照関係が GC でどう使われるかに興味があるんだったら
読んでみるといいかもしれない

ところで byte = 8bit じゃない計算機もあったよね
そのために 8bit を明示するときは octet と言ったり






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef