1 名前:デフォルトの名無しさん mailto:sage [2011/08/21(日) 10:47:48.04 ] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) Objective-C [ObjC part:5]; hibari.2ch.net/test/read.cgi/tech/1279730299/ Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/ 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
321 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 23:30:50.26 ] >>319 階層化アーキテクチャという言葉を知っていますか? BSDのLinuxエミュレーションはBSDカーネルIFが公開されていて、 しかもBSDカーネルのコード自身もオープンだから実現できた技術 どちらもUNIX由来のカーネルIFでカーネル空間内で実行されるから、 一般的な用途ではまず支障のない性能(低オーバヘッド)を達成できた カーネルIFが公開されていないiOSとは、まったく事情が異なりますヨ
322 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 23:37:58.26 ] >>321 iOSのカーネルってXNUじゃないの?
323 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 23:41:41.28 ] いや、自分はiOSハッカーとかそういう類の人じゃないからよくしらないけどね。 JBの仕掛けを作ってる人たちはその気になればそれなりにやれるんじゃないのかと思って。
324 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 06:08:16.09 ] >>321 AndroidがLinuxカーネルにポーティングされてるからって、iOSでもカーネルにポーティングしなきゃならんわけではなかろ? Androidの下側のインターフェイスは公開されてるんだから、階層が違っても可能だと思うがなぁ。 確かにパフォーマンスは期待できないかもしれないが。
325 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:00:45.98 ] 「階層化アーキテクチャという言葉を知っていますか?」 と言っておけば取り敢えず何か言った気になれるということを学習した
326 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:46:57.99 ] 試してないけどin-the-boxていう DalvikのiOSポートがあるね
327 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 22:10:34.20 ] >>326 インストールしてみた デモの通りにjavaのclassをdxしたjarが動いた Hello Worldなw
328 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 22:16:25.02 ] >>321 カーネルインターフェイスってなんだよw Androidのアプリは基本vmで動いてるんだし libcなどのライブラリもある まるごとAndroidのシステムを動かす必要はないんだしな
329 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 22:17:58.76 ] まだ続いててワロタ
330 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 08:14:42.13 ] 必死で反論を考えて痛んだろw
331 名前:デフォルトの名無しさん mailto:sage [2011/11/01(火) 21:09:15.58 ] 初めて見たとき、@" "とか[]とか*とかで、なんか気持ち悪い!って思いましたが。 やってみるといいですねこれ。
332 名前:デフォルトの名無しさん mailto:sage [2011/11/02(水) 12:37:24.21 ] NetHack厨だった俺には特に違和感なかった。
333 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 22:37:26.50 ] シングルトンインスタンスの作成 developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html このListing 2-15 シングルトンの実装の最後に 「必要に応じて割り当てと初期化を通じて他のインスタンスを作成する機能も必要になることがあります。そのような場合は、Listing 2-15に示したようにallocWithZone:以降の各メソッドをオーバーライドしません。」 ってあるんですが、 このシングルトンにプロパティを持たせる場合は「+ (MyGizmoClass*)sharedManager」だけ残して後は消してね。って意味でしょうか? その場合、どうやってプロパティを初期化するんでしょうか?
334 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 23:21:21.21 ] >>333 > 「+ (MyGizmoClass*)sharedManager」だけ残して後は消してね。って意味でしょうか? そういう意味だと思います。 > このシングルトンにプロパティを持たせる場合は...その場合、どうやってプロパティを初期化するんでしょうか? で、そのプロパティの話はどこから出て来たんだ? まあ、プロパティの初期化なら、単純にinit...メソッド書くだけだけど?
335 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 00:18:04.53 ] >>333 >>334 氏も触れているが、プロパティを持たせる件はどこから? 「インスタンスを作成する機能が必要な場合は」だよね。私には使いどころがイマイチわからないけど。 で、このドキュメントは英語版で更新されているので微妙に悩んだらそちらをあたってみる事もオススメ します。実装も少し変わってるし。 developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32
336 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 01:08:18.27 ] 横からなんだが、 英語の方のsynchronizedが消えた理由と、 allocWithZoneでretainしているのに、copyWithZoneでしていない理由がワカラン どうでもいいと言えば、それまでなんだけどさ
337 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 08:46:22.78 ] プロパティってのはこのシングルトンのインタンス変数にアクセスするためのインターフェースの事です。 そのプロパティにアクセスした時の初期値を>>333 のシングルトンのコードの場合、どこで初期化するば良いのか知りたかったのです。 シングルトンがインスタンス変数を持つ場合は>>333 のコードの+ (id)allocWithZone:以降はいらないとなると 残った+ (MyGizmoClass*)sharedManagerの中で問題ってことですよね。 >>335 の英語版ドキュメントの方が新しいので今後はそちらを参考にしょうと思います。 >>336 シングルトンなのでコピーさせないようにしてるのでは。
338 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 09:23:49.53 ] そもそも、シングルトンを複数生成やコピーできないようにするコードって必要なの? プログラマが気をつければ済む話じゃない? ARC に移行したら retain や release は使えないし。 まぁ大規模プロジェクトや不特定多数に使われるライブラリなら分かるけど。 って訳で、+ sharedXXX だけ定義して使ってる。 インスタンスが必要なければクラスメソッドで済ませちゃうし。
339 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 09:27:12.68 ] >>336 実装が変わってるのは旧版だとアナライザちゃんが警告するんだけど?って文句が出たから 言ってみれば今のはアナライザちゃんを騙すためのごまかしが入ってる
340 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 09:36:00.88 ] >>338 俺もそんな感じで使ってる。趣味開発なら問題無いしな。 >>339 なるほど。納得した。 でもsynchronizedまで外していいのかね。
341 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 10:33:21.52 ] >>338 別のクラスの中に埋めたりした時にもシングルトンである事を保証したいような時に使うかな? シングルトンなオブジェクトを別のオブジェクトに埋めないように気をつけるか、 埋めたオブジェクトを複数生成したりしなければ問題ないかと。 でも、これらに気をつけながら使うぐらいならわざわざシングルトンの実装はしないな。
342 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 11:52:35.79 ] >>341 埋めるってどうやって? C++ なら分かるけど、ObjC だとポインタで持つしかないよね? サブクラスのこと?
343 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 19:40:25.28 ] >>337 > プロパティってのはこのシングルトンのインタンス変数にアクセスするためのインターフェースの事です。 なんか、「プロパティ」と「インスタンス変数」と「インターフェース」の言葉の意味をどう解釈して良いのか分からないぐらい、意味不明な内容なのだが... 普通に考えると、シングルトン・オブジェクトにアクセスするインターフェースは、+ (MyGizmoClass*)sharedManagerということになると思うのだが。
344 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 20:39:14.03 ] >>343 また横からなんだが、 @interface Singleton : NSObject { int value; } + (id)sharedInstance; @property int value; @end ならvalueプロパティが、インスタンス変数valueにアクセスするインターフェースになるんじゃ それと今は、 NSFileManagerのように、defaultManagerとalloc-initで得られるインスタンスが異なるから、 そういうケースでalloc以降をオーバーライドすると、allocしたやつがreleaseできなくなるって話だよね? プロパティ持たせるだけなら、alloc以降もオーバーライドしないといかんし。
345 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 20:55:39.70 ] >>344 そういうことなら、結局のところ、シングルトンのプロパティはinit...メソッドの中で初期化すればいい。 という話でいいのかな?
346 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 22:08:05.03 ] >>345 alloc-initでshared...と同じインスタンスを返す仕様だと、 initをオーバーライドしないと、alloc-initで取得した場合に、 初期化済みのインスタンスに再度親クラスのinitを呼ぶことになるから、 それが嫌なら、何らかの対策は必要になるんじゃないかな。 NSObjectのinitなら単にself返すだけとドキュメントに書いてあるけどね。
347 名前:700 mailto:sage [2011/11/16(水) 10:32:58.96 ] これからiPhone/iPodのアプリの開発をはじめたいんだけど、 端末は第三世代と第四世代の2つ(どっちかをiPhone、もう片方がiPod Touch) があればいいのかな?
348 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 10:52:47.63 ] スレ違いだから良く分からんが全部持っとけばいいんじゃね? ObjCがどれでも使えるのは間違いないよ
349 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 21:45:17.31 ] iPhoneアプリのInstagramみたいにiOS5のTwitter機能使いつつ投稿クライアント名を任意にしたいんだけど、どうすればいいの?教えてエロい人
350 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 05:27:53.65 ] 勉強してみるかな
351 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 16:07:25.96 ] UIView.hにある以下は何を表しているのでしょうか? @interfaceは class : supper class という書き方しか知らないのですが。 @interface UIView(UIViewGeometry)
352 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 16:48:17.24 ] >>351 >>3
353 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 17:23:22.58 ] windows7 でのGNUStepのgccにてobjective-cなのですが、 @autoreleasepool { }ブロックがコンパイルできなくて困っています。 これがコンパイルしたいコードです //main.m #import <Foundation/Foundation.h> int main(void) { @autoreleasepool { id obj = [[[NSObject alloc] init] autorelease]; } return 0; } Makefileです main.exe: main.o gcc $^ -o $@ -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -enable-auto-import main.o: main.m gcc -c -o $@ $^ -I /GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString clean: @rm -rf *.exe *.o
354 名前:353 mailto:sage [2011/11/23(水) 17:25:18.76 ] エラー内容です。 main.m: In function 'main': main.m:6:2: error: stray '@' in program main.m:6:3: error: 'autoreleasepool' undeclared (first use in this function) main.m:6:3: note: each undeclared identifier is reported only once for each func tion it appears in main.m:6:19: error: expected ';' before '{' token
355 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 17:31:23.78 ] autoreleasepoolやめて手で書けば
356 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 17:34:49.11 ] >>353 blocksにはClangが必要
357 名前:353 mailto:sage [2011/11/23(水) 17:38:55.56 ] >>356 ありがとうございます。 そうなんですか・・・ MaxでのXCodeでもそうなんですか?
358 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 17:40:30.07 ] >>356 なんでBlocks? ARCの話だろ
359 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 17:41:54.49 ] ARCの話ともちょっと違うかも
360 名前:353 mailto:sage [2011/11/23(水) 18:31:18.30 ] 調べてみたらMaxでも新しいXCodeなら使える?らしいですね ttp://stackoverflow.com/questions/7926843/a-fail-concerning-the-expression-autoreleasepool 手でNSAuto〜でやることにします。 ありがとうございました。
361 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 20:00:10.17 ] gccを使わず、clangにすればいい。
362 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 21:18:00.25 ] winでgnu stepでgccとかって なんかの修行?
363 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 22:04:37.76 ] >>362 今手元にMacが無いんですが、今後objective-cやる予定があって、 その練習です。なのでこの環境でアプリ作る予定ではないです。 >>361 clangでやったらヘッダーが無いとか色々怒られて面倒になってしまいました
364 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 22:06:06.40 ] 勉強なら仮想環境(VMWare)上でやればいい
365 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 22:52:42.88 ] >>364 う〜んどうやらグレーな感じですし、今回はやめておきます。
366 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 23:07:28.63 ] プログラミングで遊ぶのにMacいいよ いい機会だし一台手に入れてみては
367 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 23:13:34.83 ] >>366 お金たまったら手に入れたいな〜と妄想中ですわぁ
368 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 01:08:58.21 ] Mac Mini買っとき
369 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 09:49:52.99 ] miniは、なかなかよい
370 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:51:19.37 ] 色の配列を作成したい。 Color list[] = { "ffffff", "ffcccc" }; みたいなことをしたい。
371 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:15:01.31 ] 共通の定数を定義したcommon.hを作成し、 他の複数のファイルから#importするとリンクエラーになる。 回避策ない?
372 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:25:13.62 ] なにをどんな風に書いてんの?
373 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 02:20:26.39 ] インポートは何回やってもいいはずだが、 インクルードはだめだけど
374 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 02:29:13.98 ] 同じ定義が複数のファイルに含まれる事になってduplicate symbolとかそんな話でしょ。
375 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 18:25:59.32 ] extern使え
376 名前:デフォルトの名無しさん [2011/11/25(金) 21:42:59.95 ]
377 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:06:34.95 ] クラスの引数のラベルって第2引数からしかつけられないのかね? 第1引数はメソッド名がラベル扱い?
378 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:22:32.62 ] VBとかの引数ラベルとはまた別の考えの物だから
379 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:23:01.83 ] 137:デフォルトの名無しさん :sage:2010/10/17(日) 12:28:41 メソッドの第一引数のコロンの前はメソッド名なのに、第二引数以降はコロンの前がラベルになってる。 アンバランスな気がするんだけど、言語デザイン的に理由があるのかね。 コロンを縦に並べたときの見栄えのためだけに、第一引数の前のラベルはなかったことにしたの? 138:デフォルトの名無しさん :sage:2010/10/17(日) 14:07:02 全部メソッド名なんだが。 ラベルなんてものはない。 140:デフォルトの名無しさん :sage:2010/10/18(月) 10:28:46 developer.apple.com/jp/documentation/cocoa/conceptual/objectivec/Articles/chapter_2_section_3.html ラベルって呼ぶんだよね、実は。 便宜上そう呼んでるだけっぽいけど 143:デフォルトの名無しさん :sage:2010/10/18(月) 14:00:40 >>140 ObjCの専門用語としてラベルって言ってるんじゃなくて 日常英語としてラベルって書いてるんだろうね
380 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 01:37:00.20 ] 構文では単にセレクタとなってるね しかしそもそも第一引数にも:ついてる
381 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 01:39:55.72 ] allocみたいな:がない奴は単項セレクタで引数ではない
382 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 09:23:40.61 ] CもC++もObjCも慣れたらどうってことは無いな ObjCは活躍の場が限られすぎるところが問題だが
383 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 11:08:23.45 ] 勝谷君
384 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 13:10:38.28 ] やってみる
385 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:48:51.89 ] 質問です。 ObjCではシングルトンインスタンスは作りっぱなしのコードばかり見つかるんですが、 それはOSがお片付けしてね!って思想ですか? もちろんメモリ以外のリソースは、 それ用のメソッドを用意しなければならないですが。
386 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:52:33.36 ] シングルトンを一々解放する必要がある設計ってなによ?
387 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 17:20:59.95 ] >>385 他の言語だといちいち自分で解放するの?
388 名前:385 mailto:sage [2011/12/06(火) 17:26:03.67 ] CやC++でヒープに確保していたシングルトンインスタンスは解放していたので。 ただ解放しないという方針でよさそうですね。 ありがとうございました。
389 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 17:53:40.59 ] 自力リファレンスカウンタ方式なら通常運用で解放できるんじゃね? static long refCount = 0; @implementation Hoge static Hoge *sharedInstance = nil; - (id)allocWithZone:(NSZone *)zone { refCount++; // 以下テンプレ通り } - (id)retain { refCount++; return self; } - (id)autorelease { [[[Foo alloc] initWithObj:self] autorelease]; return self; } - (oneway void)release { if(--refCount == 0) [self dealloc]: } @end @implementation Foo - (id)initWithObj:(id)inObj { obj = [inObj retain]; } -(void)dealloc { [obj release]; [super dealloc]; } @end とか
390 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 19:05:51.90 ] @imp... + (id)alloc...{ if (!sharedInstance) { ... } ... } - (void)dealloc { ... sharedInstance = nil; } ... @end 参照カウンタはNSObject任せでいいような。
391 名前:385 mailto:sage [2011/12/06(火) 21:14:15.76 ] >>389-390 状況によってはこっちの挙動のがいい場合もありそうですね ありがとうございます。
392 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 23:27:40.83 ] >>389 面白いなあ。キミ頭おかしいんじゃね? 自力リファレンスカウンタ(笑)
393 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 15:24:50.29 ] UDPプログラムを作っている時、エラーが出てきてとれません。 参考サイト www.geekpage.jp/programming/macosX-network/udp.php エラーが出ているところ addr.sin_addr.s_addr = inet_addr("127.0.0.1"); エラー内容 file://localhost/Users/user1/Desktop/wol/wol/Wol.m: warning: Semantic Issue: Implicit declaration of function 'inet_addr' is invalid in C99 なにか追加したらいいんでしょうか?
394 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 15:48:59.03 ] #include <arpa/inet.h>
395 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:06:42.01 ] >>394 ありがとうございました。それで消えました。
396 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:13:02.79 ] スレチだしエラーくらい自分で読めって感じだけどな。
397 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:31:48.37 ] ググればすぐに解決することを聞いてくる奴は無能以下だよな
398 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:20:09.88 ] >>397 未満だろ 無能に謝れ
399 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:35:34.54 ] 文脈をみれば以下で自然。 予想以下とか、予想を含まないから。
400 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 23:47:57.37 ] 困った、バカだ
401 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 10:33:32.17 ] 以下でOK
402 名前:デフォルトの名無しさん [2011/12/14(水) 11:35:33.11 ] すみません。教えてください。 (1)を(2)に書き換えるべきか悩んでいるのですが、(2)のほうがメモリの効率は良いのでしょうか? (NSStringの割り当てはメモリに残り続けると何かで読んだので、気になっています) それとも、これはあんまり意味のない書き換えで、メモリがきついなら、ループの何回かに一回、 NSAutoreleasePoolを挟んでおけばおkですか? (1)NSString for(int i = 0; i < newDataArray.count; i = i + 1) { NSString *threadString = [newDataArray objectAtIndex:i]; <中略> } (2)NSMutableString NSMutableString *threadString = [[NSMutableString alloc] init]; for(int i = 0; i < newDataArray.count; i = i + 1) { [threadString setString:[newDataArray objectAtIndex:i]]; <中略> } [threadString release];
403 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:40:38.13 ] (1) の方が良いに決まってるだろ。 > [threadString setString:[newDataArray objectAtIndex:i]]; Array から取り出した String を一々コピーしてどうする。
404 名前:402 mailto:sage [2011/12/14(水) 11:51:41.88 ] >>403 ありがとうございます。 メモリに残るというのは、NSString *msg = @"hoge"; のように定数を設定した場合の話ですよね。 助かりました。
405 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:53:40.04 ] 処理が要素を読むだけなら(1)の一択 >NSStringの割り当てはメモリに残り続けると何かで読んだので、 意味が分からない NSStringリテラルの話? あと、高速列挙使った方がいいかな int i = 0; // インデックスが必要なら for(NSString *threadString in newDataArray) { // なにかする i++; // インデックスが必要なら } >NSAutoreleasePoolを挟んでおけばおkですか? うん
406 名前:402 mailto:sage [2011/12/14(水) 12:13:56.07 ] >意味が分からない NSStringリテラルの話? リテラルの話です。仕様の細かい話を読んで、理解しきれず変に混乱してしまったみたいです。スマソ。 >あと、高速列挙使った方がいいかな 使ってなかった。ありがとー!
407 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 07:48:15.32 ] plistファイルを読み込みたく、以下のように記述しました NSString *path = [[NSBundle mainBundle] pathForResource:@"hogehoge" ofType:@"plist"]; NSArray *array = [NSArray arrayWithContentsOfFile:path]; しかし、これだとerror: initializer element is not constantがでます そういう場合はどこに原因があるのでしょうか
408 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 08:42:27.37 ] >>407 エラーメッセージでぐぐれ。 書く内容の問題ではなく、書く場所の問題。メソッド (や関数) の中に書けば OK。
409 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:02:15.93 ] これで独立できる 売るものはスマートフォンアプリ WEBサイト運営 サーバーはクラウド VPS 電話はスマートフォンSkype オフィスは地方にプレハブ型の格安高性能オフィスを建て(300万〜500万) レンタル自習室&シェアオフィスで収入を得ながらそこで開発する bit.ly/iLIpJa bit.ly/m7nkew
410 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:31:16.55 ] 地方でシェアオフィスが成功すると信じるあなたは事業失敗に突き進むと予言しときます
411 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:17:47.23 ] >>410 それ、定期的に流れるスパムだよ
412 名前:デフォルトの名無しさん [2011/12/21(水) 17:21:27.29 ] クラスの中で変数をセットする場合って、たとえば、 name = @”hoge”; ではなく、self.name = @”hoge”; もしくは、[self setName:@”hoge”];とやるべき? publicな変数にそうしたほうがいいのは分かるけど、作法として、privateな変数にまでそうやるべきもの? privateを含む全ての変数に@property,@synthesizeを設定するのは、ちょっと面倒に感じるのだけど。
413 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:31:31.47 ] オーナーシップ GC、ARC で答えが微妙に違う KVO発動させなくていいなら割とどうでもいい
414 名前:412 mailto:sage [2011/12/21(水) 20:20:34.18 ] >>413 >GC、ARC iOS用に書いてたんだけど、ARCになるとルール全然違うのね。うへえ。 >KVO発動させなくていいなら割とどうでもいい 参考になった。ありがとう。
415 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:13:11.69 ] 半端な知識でインスタンス変数に生で代入したりするとメモリリークしまくる だけだから素直にプロパティ使った方がいいと思うけどね モダンランタイムになってから自分で変数用意してやる必要無いし 手間としてはそんな変わらん
416 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:13:55.54 ] まあARC使うならあんまり気にしなくていいけど
417 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:48:56.85 ] >>411 そんなスパムにコメントしたあたくしがこっぱずかしー
418 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:44:48.35 ] 穴を見つけて入れ!
419 名前:デフォルトの名無しさん [2011/12/22(木) 00:18:13.73 ] アホな質問でごめん。以下のfuncで messageの解放がはじまるのは、forループが終わった後で、 regexpの解放がはじまるのは、funcを抜けた後という理解で合ってる? つまり、スコープ内でのautoreleaseオブジェクトの生存が保証されてるのか、ということなんだけど。 たとえばfuncをバックグラウンドで実行させている途中でメモリの解放がかかったときのために、 (まさか、いらないとは思うんだけど)関数内の頭と尻尾で手動でallocとreleaseしたほうがよいのかとか混乱中。 - (void)func:(NSArray *)sourceArray pattern:(NSString *)pattern relace:(NSString *)replace { NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; for(NSString *message in sourceArray) { NSString *replaced = [regexp stringByReplacingMatchesInString:message options:0 range:NSMakeRange(0,message.length) withTemplate:replace]; /* 中略 */ } }
420 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:42:02.76 ] message は retain されてないから、解放も糞もない。 regexp の解放は、func を呼び出す状況に依るだろう。
421 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 01:15:47.16 ] >>419 ARC かどうかで微妙に違う。ARC 無効の場合、 ・message は sourceArray が retain してるものを参照してるので、 sourceArray から削除されない限り有効。 ・regexp は一番内側の autorelease pool が解放されない限り有効。 自分でわざわざ autorelease pool を生成/解放しない限り、 スコープを抜けても有効。特に、return してもまだ生きてる。 ARC の場合、regexp や message などの変数はデフォルト __strong なので、 代入した時点で retain され、スコープから抜ける時に release される。 (スコープから抜けても sourceArray や autorelease pool が所有権を 持ってるので、ただちに解放される訳ではない。)