- 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
- 910 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:07:47 ]
- >>909
例外処理に悩むならException Programming Topics for Cocoa くらいは嫁。その中の Exception Handling and Memory Managementに、まさしく あなたが悩んでいることについて書いてある。ピックアップすると The simplest is to refrain from releasing local autorelease pools in @finally blocks もっとも簡単な方法はfinalyブロックでローカルなプールを使うなってこと。
- 911 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:18:05 ]
- >>910
申し訳ない。その辺の文章は全て和訳されてるとばかり。 developer.apple.com/mac/library/documentation/cocoa/conceptual/Exceptions/Tasks/HandlingExceptions.html おお、素晴らしい。savedException を使います、成る程ね。 ありがとうございました。
- 912 名前:910 mailto:sage [2010/05/25(火) 00:22:43 ]
- じゃあどこでpoolをreleaseするのか不安に思ってるかもしれないので、
追記。 Autorelease poolはスタック状のデータ構造になっていて、 最上位でないAutorelease poolが解放されると、それより上の 内側のpoolおよびそれに登録されたオブジェクトはリリースされる (Memory Management Programming Guide for Cocoa; Scope of Autorelease Pools and Implications of Nested Autorelease Pools 参照) Cocoa/Objective-Cでinitとreleaseの対応は金科玉条 (破るとすなわちメモリリーク) だけど、autorelease pool自体はinitとreleaseが厳密に対応していなくても許容される…みたい。下層のpoolがreleaseされるのが前提だけど。
- 913 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 13:51:57 ]
- @interface MyAutoreleasePool : NSObject {
NSAutoreleasePool *_pool; NSPointerArray *_buf; } - (void)throwToOuterPool:(id)obj; @end @implementation MyAutoreleasePool - (id)init { self = [super init]; if (self) { _pool = [[NSAutoreleasePool alloc] init]; _buf = [[NSPointerArray alloc] initWithOptions: NSPointerFunctionsZeroingWeakMemory]; } return self; } - (void)throwToOuterPool:(id)obj { [_buf addPointer: [obj retain]]; } - (void)dealloc { [_pool release]; for (id obj in _buf) [obj autorelease]; [_buf release]; [super dealloc]; } @end こんなん作って、@catch 中で [pool throwToOuterPool: e]; するコトにしたよ。
- 914 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 20:50:57 ]
- Objective-Cの逆コンパイラってありますか?
- 915 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 22:14:33 ]
- 何悪いこと企んでるんだ?
- 916 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 10:14:52 ]
- 今月で販売が終了してしまうプリンタのドライバを逆コンパイルしたい。
- 917 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 13:42:00 ]
- Objective-CってコンパイルしちゃうとCと区別付かないよね
Objective-C特有の関数呼び出しが多数現れるけど
- 918 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:00:29 ]
- ObjC で書かれたドライバなんてあるの…
- 919 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:27:40 ]
- 馬鹿はレスしなくていいです
- 920 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 19:56:19 ]
- >>917
ObjC 特有の関数呼び出しが多数現れるから、コンパイルしても C と区別付くよ。
- 921 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 20:44:33 ]
- >>920
そうじゃなくて、>914へのヒントだよ
- 922 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 20:46:36 ]
- ObjC のメッセージ呼び出しを解釈するデコンパイラが有っても良いと思うよ?
- 923 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 22:12:38 ]
- code-dump.sourceforge.net/
- 924 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 02:21:48 ]
- 今まで色々書いてきて萩原本の内容を一通り制覇したけど、「分散オブジェクト」だけは未だどう利用すればいいのか分からない。
どういう処理に使ったとか、実践的・実用的な利用例があったら教えてくれ。
- 925 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 02:22:16 ]
- 経験談とか。
- 926 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 13:32:29 ]
- すでにコンパイルされたiPhoneのアプリを
c#のように解析することはできますか?
- 927 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:04:48 ]
- >>926
>c#のように 具体的に何がしたいの?
- 928 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 14:54:53 ]
- >>927
ソースみて参考にしたいのです 特に規約とかないようなので
- 929 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:05:25 ]
- Objective-C なら結構動的に動いてる部分があるので
逆コンパイルもそれなりな形にできそうだけど いかんせん逆コンパイラが作られるほど有名な言語でもないというのが
- 930 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:07:21 ]
- >>928
デコンパイルしたいってことか。 残念ながら iPhone アプリのデコンパイラは知りません。 アプリの動きを知りたいなら、Instruments でカスタム DTrace スクリプトを書くのが一番良いと思います。
- 931 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:18:44 ]
- >>928
コーディング規約なら一応あるよ。 Coding Guidelines for Cocoa developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html あと、 /Developer/Examples の中にサンプルソース(TextEditとか)が 入っているので、参考になるかもよ。
- 932 名前:931 mailto:sage [2010/06/06(日) 15:20:47 ]
- Cocoaスレと間違えた。めんご
- 933 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:42:47 ]
- 規約がないってのは
リバースエンジニアリングを禁止する規約がないって意味でしょ
- 934 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:10:28 ]
- 見落としてるだけだろ
- 935 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:38:46 ]
- いや、パクる気満々だな
- 936 名前:デフォルトの名無しさん [2010/06/08(火) 07:45:09 ]
- いえ、解析してそのゲームでチートしようと思ってます
- 937 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:02:20 ]
- ageんな死ね。
- 938 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 15:25:24 ]
- Objective-Cでは、厳密にprivateやpublicと明示的に記述し、スコープ分けしないのでしょうか?
入門書を何冊か読んだのですが、どれもインスタンス変数のスコープ分けをしていないので、気になっています。
- 939 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 15:27:26 ]
-
@interface AClass : NSObject {
- 940 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:01:09 ]
- そのあたりに言及してるのは荻原本ぐらいじゃないかな
- 941 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:26:05 ]
- @privateでもKVCとかでアクセスできるし
プライベートであるという表明だけは出来るけど 静的チェックは甘いよね。
- 942 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:11:59 ]
- >>940-941
ありがとうございます。 自分はJavaやってから始めたので、クラス内でしか使わない変数を隠蔽していないと どうも気になってしまって…。 荻原本は読みました。解説はしてるのですが、以降の章のサンプルコードでは積極的に 使ってませんよね。>>941さんがおっしゃるように、 「スコープ分けしてもKVCでどうせアクセスできるんだから、細かい事は気にすんな」 って事なのでしょうかね。
- 943 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:11:55 ]
- 表明するのは大事だよ
通常アクセスならエラーが出るし、 迂闊に触ってしまうことへの注意喚起も出来るから それで慣れている人は続ける方がいいよ Appleのやり方も色々だよね。 昔から有るクラスはコメントで「privateだ」って書いてあったり idな型不明のオブジェクトに隠蔽したり @privateで宣言したり。
- 944 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:06:02 ]
- >>943
なるほど、ありがとうございます。 書いている方が安心できるので、書く事にします。 少しでも単純なバグを減らせるなら、これを書くぐらいなんとことないですしね。 id型で思い出しましたが、参考書はかなりid型を使っていますが、Objective-Cは動的型結合があるのでid型で書いた方が、何かと都合が良いのでしょうか。 「ここは絶対hoge型でしょう」みたいな箇所でid型を使うのは、Javaのような静的型付け言語に慣れ親しんでいた私の身には抵抗がありまして…。 「ごちゃごちゃ言う前に慣れろ」と言われれば、それまでなんですけど、ハイ…。
- 945 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 14:24:18 ]
- 荻原本持ってるなら64ページに静的な型について書いてあるよ。
「明確な指針はないので好きにすれば良い」みたいなことが書いてある。 俺はクラス型を指定すると、コンパイル時に警告を出してくれるメリットがある のでどんどん使っていけば良いと思うよ。 ただ、コンパイル時には静的な型チェックを行ってくれるが、実行時にはすべて id型になっているということがJavaとは違うので注意。 id型の代わりにクラス型を指定したせいでデメリットが生まれることはあまり ないと思われる。
- 946 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 14:35:23 ]
- >>945
ありがとうございます。書いてました。申し訳無いです。 >ただ、コンパイル時には静的な型チェックを行ってくれるが、実行時にはすべて >id型になっているということがJavaとは違うので注意。 この違いは大きいですね。注意します。ありがとうございました。
- 947 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:10:05 ]
- >>943
WebViewはちょっと面白いよね。 @privateでWebViewPrivateクラスのインスタンス変数を持ってるだけだし、 WebViewPrivateクラスの実装とかはなぜかWebViewDataにある。
- 948 名前:デフォルトの名無しさん [2010/06/11(金) 16:03:43 ]
- CFIndex型の変数indexに、どんな値が入っているか見ようと思うのですが、
NSLog("%O", index); としましたが、ポインタコンパチブルなんたらと怒られました。 何が間違っているのでしょうか?と質問しようとして、 よく見たら、1つ目の引数のポインタが型違うやんみたいなことを言われました。 NSLog(@"%O", index); としたら、うまく行きました。自己解決しました。ありがとうございました。 以前にもこういうミスがありまして、こういうミス起きないようにするには どうすればよいでしょうか。変な質問ですがよろしくお願いします。
- 949 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 16:50:47 ]
- 文字列の前には@を付けると頭に叩き込むしかないんじゃないかな。
- 950 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 20:30:49 ]
- >>948
一度遭遇したエラーや警告を、その原因、対処方法とともに意識して憶えていく努力をする。
- 951 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 20:37:59 ]
- 次に948は、
CFIndex型の変数indexに、どんな値が入っているか見ようと思うのですが、 printf(@"%O\n", index); としましたが(ry
- 952 名前:948 [2010/06/12(土) 14:48:06 ]
- みなさんアドバイスありがとうございます。
>>949 「あっと驚くNSString」これで頭に叩き込もうと思います。 頭に叩き込んでいたら怪我をしてしまいまして、これから病院に行ってきます。 >>950 そうですよね。がんばります。 >>951 次は無いようにしたいですね。 そこで新たな質問ですが、 NSLog(@@"%O", index); のところでエラーが出ます。 原因はなんでしょうか?
- 953 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 14:56:21 ]
- バカかお前は。
- 954 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 23:08:40 ]
- バカの相手するのもなんなんだが、log って打って補完すれば NSLog(@""); って補完してくれて "" の中にキャレット動かしてくれるぞ
- 955 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 06:40:53 ]
- >log って打って補完すれば NSLog(@"");
俺、べつのバカだけど、そうなんだ!べんりだなー
- 956 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:18:32 ]
- すみません 非常に初歩的で申し訳ないんですが、iphone ipadのプログラムがしたいと思い、windowsに>>15の
www.gnu.org/software/gnustep/experience/Windows.htmlの通りインストールしたんですが、shellのコマンドがわかりません というかみなさんMACでやってるんですか? iphone ipad の用プログラミングでvisual C++みたいなのありませんか?
- 957 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:21:02 ]
- スレチ。というか Mac も持ってないのにコード書いても意味ないだろ。
- 958 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:30:07 ]
- >>957
そうなんですか 初級過ぎてすみません>< アップル公式のSDKもよく見たらMAC限定みたいですね 出直してきます
- 959 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 23:44:33 ]
- ちょっとわらった
- 960 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 09:45:40 ]
- ttp://code.google.com/p/json-framework/wiki/InstallationInstructions
ここのOption 3を見ながらJSON-Frameworkを使ってMacアプリでテストを行おうとしているのですが、うまくいかずに困ってます。 フレームワークをプロジェクトに追加したので、3.までは終わってると思うのですが、 4の意味がわかりません。これは何をすれば良いのでしょうか?
- 961 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 10:31:17 ]
- >>960
サイドバーの 「ターゲット」を展開→アプリ名になってる項目を右クリック→「追加」→「新規ビルドフェーズ」→「新規コピーファイル」 開いたパネルの「デスティネーション」を「フレームワーク」に設定 アプリ名の項目を展開→「ファイルをコピー」の上に JSON.framework をドロップ
- 962 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 10:34:45 ]
- JSON.framework は実際のファイルではなくて
サイドバーの <プロジェクト名>/Frameworks 項目の中に入ってるやつ
- 963 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 11:07:33 ]
- >>961-962
ありがとうございます。前進できました。 ビルドすると、JSON Frameworkのいくつかのファイルが見つからないというエラーが出ましたので、 私の設定のどこかがまずいのでしょう。 頑張って潰したいと思います。
- 964 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:46:22 ]
- 楽しいココアのレヴューにこういう↓のあったんだが、実際のところどう?
あと萩原本以外にいいのないですか?自分はCは中級くらいやれてます ********************* Leopardにアップグレードしてしまった方、 この本は使えません。Xcode Toolに大幅な変更があったからです。 まだTigerを使っている方。この本は貴方のためのものです。 本の通り作業して行けばCocoaのいろはのい位まではモノになるはずです。
- 965 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 19:47:48 ]
- スレチ。
- 966 名前:964 mailto:sage [2010/06/21(月) 20:09:39 ]
- すみませんでした 新macのcocoaスレ行ってきます
- 967 名前:デフォルトの名無しさん [2010/06/24(木) 03:59:04 ]
- yomi.bbspink.com/test/read.cgi/ascii2d/1275848135/225
採用
- 968 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 22:15:30 ]
- codepad.org/H3j8eTAB
このコードで、どのNSLogも出力されないんだが何か間違ってる? これじゃNSOperationQueueを使う意味がないのは承知の上。
- 969 名前:968 mailto:sage [2010/06/28(月) 17:59:49 ]
- Appleで聞いてくる
- 970 名前:デフォルトの名無しさん [2010/06/29(火) 18:10:59 ]
- V V
(´・ω・`) うさちゃんピース
- 971 名前:デフォルトの名無しさん [2010/07/02(金) 05:44:56 ]
- すみません。
1ヶ月未満の初心者なんですが、初歩的なことでつまずいています。 ヘッダファイルで @interface PListReadViewController : UIViewController { NSArray* persons; } @property(nonatomic,retain) NSArray* persons; で、ソースファイルで @synthesize persons; -(void)hogehage{ NSBundle* bundle = [NSBundle mainBundle]; NSString* path = [bundle pathForResource:@"test" ofType:@"plist"]; NSArray* persons = [NSArray arrayWithContentsOfFile:path]; } としてるんですが、hogehageのpersonsはローカル変数として扱われてしまうみたいですね。 interfaceで定義してるpersonsに、パッケージにバンドルされてるplistを配列として展開して、 別の関数内でpersonsを使いたいんですけど、どうしたらいいんでしょうか?
- 972 名前:971 mailto:sage [2010/07/02(金) 06:11:49 ]
- できました!
ttp://www15.plala.or.jp/NovemberKou/programming/2ndGeneration/2ndHome/RMGWindowController/fixCrashDnD.html を参考にしました。 NSArrayの使用サンプルはみんな、1関数内で処理が終了してるものばかりで、なかなか見つかりませんでした。 おじゃましました。
- 973 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 18:57:59 ]
- [NSHoge hoge~~] ってのは自動で autorelease に登録されてると覚えよう。
- 974 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 20:38:07 ]
- とは限らないけどね
|

|