[表示 : 全て 最新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

33 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 17:11:46 ]
KVC準拠を意識して組んでる人いる?


34 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:32:46 ]
普通に書いてればそうならない?

35 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:08:57 ]
GUIならバインディング使うだろ
バインディング使うにはKVCで書くだろ

普通に書いてりゃkvcで書くと思う

36 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:20:20 ]
>>33 は他の言語からうつってきたばかりで、
つい getter を -(NSHage*)hoge でなくて
-(NSHage*)getHoge とかいてしまうからそう思うんではなかろうか。

37 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:17:46 ]
getだったら
- (void)getHoge:(NSHoge *)
とか言う形? 違和感有るけど

38 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:08:48 ]
>>37
-(void)getHoge:(NSHoge**)
でないと駄目だとおもう

39 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:03:12 ]
Apple gcc で -fconstant-string-class オプションが期待道理動かないんだけどなぜでしょう?
Linux で GNU の runtime 使ってると動くんですが…

#import <objc/Object.h>
#import <stdio.h>
@interface MyString : Object
{
char *bytes;
unsigned int numBytes;
}
- (const char *)cString;
- (unsigned int)length;
@end

@implementation MyString
- (const char *)cString { return bytes; }
- (unsigned int)length { return numBytes; }
@end

int main(int argc, char* argv[]) {
id s = @"Hello, World";
fprintf(stderr, "<%s:%p>\n", [s name], s);
return 0;
}
% gcc -g -fconstant-string-class=MyString -o main main.m -lobjc
main.m: In function ‘main’:
main.m:19: error: cannot find reference tag for class ‘MyString’
make: *** [main] Error 1

40 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:04:51 ]
Obj-C 2 だとこんなかんじになります。
#import <Foundation/Foundation.h>
// copied from objc/runtime.h
// because objc_class is opaque in Obj-C 2
struct objc_class_fake {
Class isa;
Class super_class;
const char *name;
long version;
long info;
long instance_size;
struct objc_ivar_list *ivars;
struct objc_method_list **methodLists;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
} ;

@interface MyString : NSObject
{
char *bytes;
unsigned int numBytes;
}
- (const char *)cString;
- (unsigned int)length;
@end

struct objc_class_fake _MyStringClassReference;
つづく

41 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:05:37 ]
@implementation MyString
+(void)load
{
memcpy(&_MyStringClassReference,self,sizeof(_MyStringClassReference));
}
- (const char *)cString { return bytes; }
- (unsigned int)length { return numBytes; }
@end

int main(int argc, char* argv[]) {
[[NSAutoreleasePool alloc] init];
id s = @"Hello, World";
fprintf(stderr, "<%s:%s>¥n", [[[s class] description] UTF8String],[s cString]);
return 0;
}




42 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 11:08:43 ]
コンパイルは
gcc -fno-constant-cfstrings -fconstant-string-class=MyString hogehoge.m -framework Foundation
とかしてください。
ポイントは、Apple runtime だと、
1. no-constant-cfstring で CFString の特殊処理をやめさせてやる
2. constant-string-class=HogeString だと、isa ポインタが
struct objc_class _HogeStringClassReference というシンボルを指します。
だからそれを初期化してやらないといけないです。
lists.apple.com/archives/objc-language/2006/Jan/msg00013.html
を参照してください。

43 名前:39 mailto:sage [2009/04/28(火) 12:28:19 ]
>>42
Thx! 試してみます.

44 名前:39 mailto:sage [2009/04/28(火) 18:26:09 ]
#import <objc/Object.h>
#import <stdio.h>
#import <string.h>

#if (defined __APPLE__) && (defined __MACH__)
# import <objc/objc-runtime.h>
struct objc_class _MyStringClassReference;
#endif

@interface MyString : Object {
char *bytes;
unsigned int numBytes;
}
- (const char *)cString;
- (unsigned int)length;
@end

@implementation MyString
#if (defined __APPLE__) && (defined __MACH__)
+ load {
memcpy(&_MyStringClassReference, self, sizeof(_MyStringClassReference));
}
#endif
- (const char *)cString { return bytes; }
- (unsigned int)length { return numBytes; }
@end

int main(int argc, char* argv[]) {
id s = @"Hello, World";
fprintf(stderr, "<%s:%p> : \"%s\"\n", [s name], s, [s cString]);
return 0;
}

45 名前:39 mailto:sage [2009/04/28(火) 18:28:24 ]
Apple % gcc -fno-constant-cfstrings -fconstant-string-class=MyString -o main main.m -lobjc
GNU % gcc -fconstant-string-class=MyString -o main main.m -lobjc
って感じで両方でコンパイル成功して期待した通り動いた.ありがとう >>42

46 名前:デフォルトの名無しさん [2009/05/13(水) 08:16:25 ]
オブジェクト自分で作ったら、リリースせんといかんと思うけど、
そのとき、例えば、AppleのCocoaだと、

NSObject obj = [[NSObject alloc] init];
[obj autorelease];

って出来るよね?
このautoreleaseって、要するにGCみたいなもんなの?

47 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 11:26:33 ]
ちがう。autorelease は NSAutoreleasePool に登録する際に使う。
NSAutoreleasePool は drain/release を受けたときに登録してある
インスタンス全てに release を送るだけ。受けなければそのまま放置。
とりあえず、メモリ管理プログラミングガイドを理解しよう。
ttp://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
それでも分からないなら、新Mac板 Cocoaはさっぱりスレ の方へどぞ。
pc11.2ch.net/test/read.cgi/mac/1241407525/


48 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 13:50:54 ]
>>46
C言語の自動変数に近い。イベントループ開始でAutoreleasePoolが確保
されて、autoreleaseにするとそこに登録される。イベントループ終了で
AutoreleasePoolが解放されて、autoreleaseで登録したオブジェクトは
全てreleaseされる。だから自分でreleaseの手間が省ける。
GCはどこからも参照されていないオブジェクトを見つけて勝手に解放する
機能

49 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 20:21:28 ]
メモリ管理プログラミングガイドは日本語版もあるよ
developer.apple.com/jp/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

50 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 20:43:38 ]
あ、日本語のはログインしないと見れないのかな、ごめん

51 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 23:51:15 ]
Xcode で、Objective-c (*.m)のクラスから 別の C++(*.cpp) ファイルの
グローバル関数を呼ぼうとすると、下記のようなエラーが出てしまいます。

Linking xxx/xxx
-[xxx xxx:] in xxx.o

Objective-Cのクラスから、C++のグローバル関数を呼べなかったようです。
*.m ファイル内に作ったローカル関数は呼べたのだけど・・・





52 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 00:18:26 ]
extern "C"

53 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 01:42:10 ]
トン

54 名前:デフォルトの名無しさん [2009/05/29(金) 19:54:09 ]
class Test
{
Test(){}
virtual ~Test(){}
};

これコンパイルすると、
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'
ってエラー出ます
何が悪いんですか?


55 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:17:13 ]
うちでは問題無かったよ。セミコロン付けろゴルァって事かな?

% cat foo.cpp
class Test
{
Test(){}
virtual ~Test(){}
};
% g++ -c foo.cpp
% ls foo.o
foo.o

56 名前:デフォルトの名無しさん [2009/06/01(月) 15:46:54 ]
>>55
いろいろ試しましたが、コンパイル通りません…
自分はiPhoneのOpenGL ESベースのアプリでやっているのですが、それがまずいんでしょうか
プロジェクト作成して、Other SourcesフォルダにTest.hを作成して、>>54のコードを記述し、それをmain.mに#importしてるのですが、エラーになります
.mmで定義するようにしないといけないのかなと思い、Test.mmを作成してコンストラクタ・デストラクタの定義をそちらに移してもだめでした

できればコンパイルを通すまでどのような手順で行っているのか教えてください


57 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:13:50 ]
before 'Test'
だから、クラス定義に問題があるんじゃなくて、
その前、恐らく includeファイル内などに問題がありそう。


58 名前:デフォルトの名無しさん [2009/06/01(月) 16:33:57 ]
ヘッダーファイルの「情報を見る」とファイルタイプが.h,.cになっていたので、.h.cppに変えました。
が、それでもダメでした。これでいけると思ったんだけどなあ。
この問題ってXcodeスレで聞いた方がいいんですかね?


59 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 17:25:52 ]
呼び出し側のmain.mの「情報を見る」でファイルタイプを.c,.objcから.cpp,.objcppに変えたら動きました。
ここら辺説明してるサイトが全然見あたらなかったですよ…
2chのXcodeスレでかろうじて類似の質問があって助かった


60 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:05:51 ]
System.Generic.List<T>に相当する
記述方式ってないのでしょうか

毎回毎回別々のオブジェクト書くの面倒です
助けてください

61 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:16:13 ]
>>60
NSArray に突っ込んで、型は気にしないというのが Cocoa 流です。
もしくは Objective-C++ にしてSTL の list を使えばいいと思いますが
その場合は retain/release に気をつけてください。

>>59
それはだって Obj-C の問題というよりは、C, C++ では
当然の話だから... いつもはどんな言語で開発してるんですか?
C, C++, Obj-C の .h ファイルは、コンパイルの際に
どの言語からインクルードされるかわからないので、
XCode 等 IDE で設定するにしても .h に言語を設定しても仕方が無いです。
.h に C++ のクラスがあるなら、
インクルードする側を (Obj-)C++ モードにしないと
そりゃあコンパイルが詰まりますよ。



62 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:43:19 ]
>>61
それなんてJavaですかw
iPhoneでもObjective-C++できるのですか

63 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:44:52 ]
C++のテンプレートはオブジェクト指向的じゃないとよく批判されるがな

64 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:46:14 ]
>>62
iPhone でも Obj-C++ できますよ
というか main.m を cpp モードにした時点で Obj-C++ になってます

65 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:52:52 ]
>>59
まさかgccでコンパイルしてたとか?
g++じゃなくて。


66 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:07:28 ]
>>65
そういうことだったんじゃないの。XCode (Mac の IDE) からだと
ファイルの言語設定でコンパイラが変わるので。
まあ確かにそのあたりはやっている人には当たり前すぎて、
解説書にもつい書き忘れてしまう... ということかも知れない

67 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:24:34 ]
GUI以外の部分で
コールバックってどうやって実現すればいいですかね?


68 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:27:45 ]
>>67
それだけで貴女以外のひとがなにが聞きたいかわかると本当におもってますか?
僕らはエスパーじゃないよ。

69 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:29:58 ]
ネットワーク処理をコールバックで処理したいの

70 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:33:15 ]
さっぱり見えてこないんだけど、Objective-Cは関係あるの?

71 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:39:50 ]
>>70
C#とC++ならコールバックあるでしょ
なんでObjective-Cには無いの?

元のソース移植できないじゃん



72 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:51:43 ]
メソッドのポインタ取り出したいってこと?

73 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:03:39 ]
>>71
何で無いと思うの? 無い訳無いじゃん。

74 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:09:42 ]
じゃあこれと等価の記述を教えていただけないですか?

double g( double x, double (*f)(double) )

75 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:11:28 ]
それでいいじゃんw

76 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:21:34 ]
>>67
関数ポインタみたいなのが欲しいんでしょ。

developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/3objc_language_overview/chapter_7_section_6.html

77 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:27:49 ]
基本は>>76で、遅いと思ったらこっち。

journal.mycom.co.jp/column/objc/022/index.html

でもネットワーク処理なら C で kqueue とか libevent とか使ったら良いのに。

78 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:32:51 ]
- (double)g:(double)x callback:(double(*)(double))f;

こういう事かな?


79 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:01:43 ]
>>71
いや、C++ のソースがあるなら Obj-C++ つかえば
なにひとつ移植しなくて済むでしょ。何を考えているんだ?アホ?

80 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:16:49 ]
>>74
それそのまんまで何が問題なんだ?w

81 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:54:09 ]
わかりにくいね



82 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:58:03 ]
typedefすればいいじゃん。

83 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:58:09 ]
Obj-Cって型が解らなくなった場合に
チェックする方法ってありますか?

84 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:41:19 ]
正確には無いと思うよ。

85 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:24:04 ]
>>83
[obj class]

developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/class
wwwa.dcns.ne.jp/~nito/OSPT/ObjcOthers.html

86 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:43:55 ]
>>83
その型ってのは、変数の型? それとも、オブジェクトのクラス?
Objective-Cは変数に型がない(idでかまわない)言語なだけですよ(プリミティブ型は除きますが)
型キャストを許す言語であれば、(変数の)型が分からなくなる事はありえるのでは?
変数の型がどうであれ、オブジェクトが自分自身の型/クラス、もしくは受けられるメッセージを知ってれば問題ないって考え方です

87 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:51:14 ]
オブジェクトの型が id なんじゃないの?
プリミティブがそれぞれの型を持っているのと同じで。

88 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 04:23:39 ]
>>87
idは構造体のポインタのtypedefだからそうとも言えるけど、それは変数に型のあるCという言語での実装の話しで...なんというか微妙な感じもする。
idには特別意味もないし、JavaとかC++の縛りのきつい「型/クラス」と、idは別の概念、別のくくりにした方がいいんではないかと。

89 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 22:58:35 ]
何なのこの投げっぱなし質問

90 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:15:09 ]
interface作ったときにメモリ開放メソッドは
どのように記述するのが一般的なのでしょうか



91 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 02:39:56 ]
@interface ... @end内にデストラクタをどう宣言するかという話かな?
普通はNSObjectで宣言されているdeallocメソッドをオーバーライドします。
(だから@interfaceにはとくに何も書きません。)
メモリ管理については
developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html
をどうぞ。



92 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 20:48:46 ]
独自にObjを定義したとして
[[Obj alloc] initHoge : arg];

allocと組み合わせて利用するinitHogeを定義するとき
定義は以下が一般的なのでしょうか?

- (id) initHoge : (NSString *) val;

93 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 22:03:25 ]
XmlTextWriterみたいなクラスってないですか?

94 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:24:29 ]
>>93
Obj-C スレにきて、返事をする人が .NET を知っていると仮定するとはいい度胸をしている。読み手のことを考えて、
「.NET ならこれこれができるこれこれというクラスが
あるんですけど、(ドキュメントは http:// ... に ...)」とか
質問の際に書けんものかね?

とりあえず NSXMLDocument をつかえば規格に準拠した XML データは
つくれますよ。かなりメソッド名が冗長だけど。
手で文字列をつなぎ合わせて XML にするよりは断然いいです。

あと、これ以上は Mac 板の iPhone プログラミングスレか
Cocoa スレに行ったほうがいいとおもいます。ここは一応 Obj-C 言語に特化した
過疎スレなので。


95 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 01:58:33 ]
>>93みたいな手合いは相手する必要ないよ。

96 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:23:27 ]
NSMutableDictionaryにオブジェクトをつっこむときに

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
Hoge *hoge = [[Hoge alloc] init];
[dic setObject:hoge forKey:@"hoge"];
とやるのと

[dic setObject:[[Hoge alloc] init] forKey:@"hoge"];
とでは、後者はメモリリークするのでしょうか?


97 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:19:50 ]
何処が違うのかさっぱりわからん


98 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:47:19 ]
>[dic setObject:[[Hoge alloc] init] forKey:@"hoge"];
て書いたら、 setObject:に渡したHogeインスタンスを後でreleaseする手段が無くなるのでは
上の書き方なら [hoge release]て書けるけど。


99 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 02:47:32 ]
>>98
なあにobjectForKey:@"hoge"で取り出してreleaseすればいいさ

100 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 07:22:05 ]
[dic setObject:[[[Hoge alloc] init] autorelease] forKey:@"hoge"];
じゃないとだめ

101 名前:デフォルトの名無しさん [2009/06/10(水) 16:29:35 ]
改行したいときって何を書けばいいんでしょうか?
\nでも\rでもダメだったんですが。




102 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:05:39 ]
(option + ¥) n

103 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:15:29 ]
>>102
ありがとうございます


104 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:35:38 ]
>>99
それ今の仕様だとメモリリークするけど?

105 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:01:56 ]
>>104
今の仕様って何?
GCのこと?だとしたらGCは仕様じゃなくてオプションだと思うんだが

106 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:07:37 ]
>>105
どっちにしてもコレクションに入れたものを
objectForkeyで取り出して開放してもリークするだろ

107 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:10:47 ]
>>106
意味が分からん、説明して

#import "Hoge.h"
@implementation Hoge
- (void) dealloc
{
NSLog(@"hoge dealloc");
[super dealloc];
}
@end

#import "AppController.h"
#import "Hoge.h"
@implementation AppController
- (void)awakeFromNib {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:[[Hoge alloc] init] forKey:@"hoge"];

Hoge *hoge = [dict objectForKey:@"hoge"];
[hoge release];

NSLog(@"%d", [hoge retainCount]);
// [dict removeObjectForKey:@"hoge"];
[dict release];
}
@end

これでログ出した時点でhogeのretainCountは1でMutableDictionaryに保持されてるだけの状態。
辞書から取り除くか辞書を解放すればHogeはちゃんとdeallocされるんだけど、どこが違うんだ?

108 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:12:36 ]
なんならHoge取り出さずに

- (void)awakeFromNib {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:[[Hoge alloc] init] forKey:@"hoge"];

[[dict objectForKey:@"hoge"] release];

NSLog(@"%d", [[dict objectForKey:@"hoge"] retainCount]);
[dict release];
}

これでもちゃんとdeallocされるけど?

109 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:14:31 ]
ふーん

110 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:20:05 ]
>>109
ふーん、じゃなくてさ

111 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:25:41 ]
あーそうかい俺が悪かったよ

謝ればいいんだろゴラぁ



112 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:39:43 ]
謝ってないんだけど

113 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:43:33 ]
Cocoaが分からないけど興味があるだけの俺みたいなのもいる訳だが、
結局のところ>>107,108が仕様として正しいということでFAですか?

114 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:02:52 ]
それ以前に作法として完全に間違っているので気にする必要はありません。
>>99はネタ。

115 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:04:42 ]
そもそもNSMutableDictionaryって非推奨のAPIだろ
NSMutableDictionaryに入れるとメモリリークするし

116 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:00:46 ]
>>115
んなわけねーだろ。retain count を勉強し直してこい。

2chで調べ物をしたい時は「教えてください」って書いても
なかなか教えてもらえない。

そういう時は、知ったかぶり風に間違ったことを自信満々に書く。
そうすると、ものすごい勢いでツッコミを入れてもらえる。


コピペ新聞 - 調べ物のコツ
copipe.info/archives/9084

ということですか。

117 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:56:44 ]
>>116
そのメソッド頂いたっ!

118 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 02:29:23 ]
>>114
いやネタっつうか、できるできないで言うならできるという意味で書いた
そりゃ普通こんな書き方はしないけど

119 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 05:54:02 ]
retain/releaseはObjective-Cと関係ないけどなんでここでやってんの?
Cocoaスレでやれば良いのに。

120 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:04:39 ]
OpenStepで規定されてるしここでいいんでねいの。

121 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:34:48 ]
正しい書き方は一体どれなの?




122 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:56:37 ]
そういう大事なことはこんなところで断片的な情報をかき集めるより書籍かなにかで
体系だった解説をきちんと読むべきだと思う。
Cocoa周りはアップルが出しているリファレンスがしっかりしてるから>>91
リンク先でも読むといいよ。

123 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 08:42:14 ]
ぶっちゃけOpenStep系以外のObjCフレームワークだってほとんどretain/release採用してるでしょ

124 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 10:23:46 ]
ここで出てるような単純なサンプルならいいけど、
一般にはオブジェクトを入れてから取り出すまでに、別スレッドからdictionaryをいじられて、別のオブジェクトをreleaseしてしまう可能性がある。
まあ作法として避けておくのが無難。

125 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:34:39 ]
あんなコード書いてたらどうしようもない馬鹿だと思われることは確実。

126 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:14:39 ]
>>96のことな

127 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:30:20 ]
>>126
すまん、初心者でよくわからんのだが、
>>96のやり方だと何がまずいのか教えてくれ。

128 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:34:59 ]
>96 のその部分だけ見れは、前者だろうが後者だろうがメモリリークする

実は前者はこの後のコードでリリースしてます、とか
オーナーシップとかしらね、後でリリースできれば良いんだよ、
とかって言い出さない限り。

129 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 18:59:21 ]
autoreleaseされたインスタンスを返すfactory methodを作るのが普通の感覚でしょ。
そこに思い至らない時点で実力は推して知るべしだから、GC使うかリークなんて
気にしなくて良いよ。リークが問題になる規模の物はどうせ作れないし、多分他にも
問題山積で誰も気が付かない。

130 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:38:40 ]
OS3.0のiPhoneでも
autoreleaseは果てしなく遅いぞ

131 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 00:41:02 ]
iPhoneでGCって性能的にやっぱ厳しいのかな




132 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:11:29 ]
OS X でも GC は案外リソース喰う気がします
Core Data で GC つかったフリーウェアつくってますが、使っていると
時々 CPU 使用率があがるのは何故かと問い合わせがあって、
しらべてみたら GC がかなり頑張ってるように見えました。

133 名前:デフォルトの名無しさん [2009/06/17(水) 19:24:12 ]
journal.mycom.co.jp/column/objc/019/index.html
こちらの方法で、特定のクラスのメソッド一覧を取得しようとしたのですが、
Objective-C 2.0でobjc_method_list構造体の構造が変わってしまっているようで、このままでは取得できませんでした。
Objective-C 2.0における、objc_method_list構造体もしくはそれに変わる構造体について、知っている方居たらよろしくお願いします。






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

前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