952 :
名称未設定 :2009/11/07(土) 20:40:08 ID:og+XN/eF0
>>951 948です。
理解してもらっているようですが、別にxib file, windowControllerが不要であると主張しているわけではありません。
手間はかかるけど、無しでもコーディングできるといっているだけです。
昔のTextEditや荻原本のサンプルのようにコードがかなり増えます。
ちなみにcurrentDocumentはdelegateを使って[[NSApp mainWindow] delegate]で代用します。
話は変わって、Mac OS X Cocoa プログラミング 第3版が届きました。
残念なことにdeprecateされたNSCalendarDateや、新しく追加されたNSPaseteboardのAPIへの
言及はありませんでした。snow leopardに対応していると銘打っていたので、もしかしたらと期待したのですが。
脚注とかでふれて欲しかった。
953 :
名称未設定 :2009/11/07(土) 21:00:13 ID:+g6kRVmC0
>>952 なるほど、delegate を使うのは思い付きませんでした。
情報どうもありがとうございます。
954 :
名称未設定 :2009/11/08(日) 00:13:44 ID:AOBYwIZ30
NSCollectionView ってバイディング前提のビュー? バインディング無しじゃ使えないんでしょうか。
955 :
名称未設定 :2009/11/08(日) 11:55:20 ID:DwnUsOEj0
CollectionViewItem から、representedObject に接続して内容を得るのに バインディングした方が楽。
956 :
名称未設定 :2009/11/08(日) 12:34:32 ID:ljpiIkUr0
957 :
名称未設定 :2009/11/08(日) 13:43:52 ID:D0/UY3D50
>>956 「興味無い」とか言う奴に誰が答えるんだよw
958 :
名称未設定 :2009/11/08(日) 14:45:47 ID:LF+h2O0g0
959 :
名称未設定 :2009/11/08(日) 15:13:35 ID:ljpiIkUr0
聞き方が悪かったのかな? 要するにエンドユーザー的な立場で、 今回の追加部分で可能になること(表現?)は何か? ということを知りたいと思ったのですが。
960 :
名称未設定 :2009/11/08(日) 18:11:51 ID:eEltJnv60
>>659 開発者にはちょっと便利になる。
エンドユーザーには何も可能にならない。開発者がアプリケーションを作らなければ何も。
961 :
名称未設定 :2009/11/08(日) 18:48:54 ID:IV25VCBo0
新クラスとしてエミッタとグラデーションと拡大縮小みたいなの他 既存クラスの拡張 CAなんていじったことないからちっとも分からんけど そこ読む限り。
962 :
名称未設定 :2009/11/09(月) 00:52:40 ID:CINvb13e0
気がついたらヒレガス本の発売が始まってた。
963 :
名称未設定 :2009/11/09(月) 11:03:09 ID:UojbosR50
今日からな。発注済み。
964 :
名称未設定 :2009/11/09(月) 17:41:09 ID:QcNjesMqP
6日に楽天ブックスで買って昨日届いた
965 :
名称未設定 :2009/11/09(月) 22:46:51 ID:CINvb13e0
今読んでるけど、チャプターがページ開いた奥に記されてるのが困る。
966 :
名称未設定 :2009/11/09(月) 23:06:12 ID:H/Mjaj1+O
原書はあんなにかっこいいデザインなのに日本版はどうして
967 :
名称未設定 :2009/11/10(火) 15:33:47 ID:JH6K56ar0
Obj-C 2.0で追加された言語仕様を勉強&試用中です。 @propertyについて質問させて下さい。(以下、64bitのみ、ガーベッジコレクタ環境の前提です) 以下のように、readonlyなメンバmyStringを持ちたいのですが、クラス内でも初期化することができません。 //----------------------------------------MyObject.h @interface MyObject : NSObject @property(readonly) NSString* myString; @end //----------------------------------------MyObject.m #import "MyObject.h" @implementation MyObject @synthesize myString; - (id)initWithString:(NSString*)str { self = [super init]; if( self != nil ) { self.myString = str; //ここがコンパイルエラーになる } return self; } @end
968 :
967続き :2009/11/10(火) 15:35:18 ID:JH6K56ar0
自分で考えた対処方法としては以下の3つなのですがどれもあまり良い方法とは思えません。 どうするのがベストなのか、皆さんのご意見下さい。 [1] readwrite,assign にする(でもしたくないなー) [2] @interfaceに { @package NSString* myString; } を書いて、init〜内で self->myString でアクセスする。 (本来書かなくていいメンバ宣言を書きたくないなー ->でアクセスするのも何か嫌だし) [3] MyObject.mに @interface MyObject (Private) @property(readwrite,assign) NSString* myString; @end を書く。 (うーんこれが一番マシ?でも再宣言するのもなー)
969 :
名称未設定 :2009/11/10(火) 15:39:30 ID:JFky9bdt0
>>967 readonlyなんだから当たり前だろ
っていうかmyStringインスタンス変数にないじゃん
2.0の前に1.0勉強し直してこい
970 :
名称未設定 :2009/11/10(火) 15:44:11 ID:jVmOBu0k0
これは酷い
971 :
名称未設定 :2009/11/10(火) 15:54:38 ID:/rvnyQpD0
親クラスでrw、子クラスでsetterをエラーさせるだけでいいのでは? setterに [self doesNotRecognizeSelector:_cmd]; って書くやつ。
972 :
名称未設定 :2009/11/10(火) 15:56:32 ID:JFky9bdt0
>>968 ああそうか、64bitランタイムだからインスタンス変数の宣言は要らないじゃんってことか。
でも宣言しても何の問題もないから、俺がやるんなら普通にこうするけど。なんでこの選択肢がないわけ?
//----------------------------------------MyObject.h
@interface MyObject : NSObject {
NSString *myString;
}
@property(readonly) NSString* myString;
@end
//----------------------------------------MyObject.m
#import "MyObject.h"
@implementation MyObject
@synthesize myString;
- (id)initWithString:(NSString*)str
{
self = [super init];
if( self != nil )
{
myString = str; //GCオンならこれでいいよな
}
return self;
}
@end
973 :
名称未設定 :2009/11/10(火) 16:48:12 ID:gCSX3uxs0
>>967 の意図はFBIのためにivar宣言をあえて省きたいってことかな?
>>972 のコードで
NSString *myString;
を抜かすこともできるよね。
974 :
名称未設定 :2009/11/10(火) 17:23:51 ID:Gq2SM78m0
? 64bitランタイムだからインスタンス変数の宣言がいらんってどゆこと??
>>972 の方法はコンパイルエラーだったように思いましたが、再度試してみたらできました。すいません。
>>973 いや、書かないと
error: 'myString' was not declared in this scope
とコンパイルエラーになりますよ・・・と思ったのですが、
>>972 のコードから NSString *myString; をコメントアウトした場合、
・OS 10.5.8/Xcode 3.1.4ではコンパイラGCC 4.0/GCC 4.2/LLVM GCC 4.2のいずれでも上記のエラー。
・OS 10.6.1/Xcode 3.2.1ではコンパイラGCC 4.0では上記のエラー。GCC 4.2/LLVM GCC 4.2ではOK。
という結果でした。(GCC 4.0のバグ?)
ちなみにコードを書いたプロジェクトは、GC必要/x86_64のみ/SDK 10.5/ターゲット10.5 です。
というわけでOS 10.6環境で開発することにします。皆様ありがとうございました。
書かなくていいはずのメンバの宣言を書きたくなかった程度の事だったのですが、勉強になりました。
976 :
名称未設定 :2009/11/10(火) 18:18:29 ID:lJ/hPUpN0
>>975 おーい、ドットシンタックスはメソッドに置き換えられる、って事を忘れてるだろ。
@property (readonly) NSString *myString + @synthesyze myString で
作ってくれるのはゲッタのみで、セッタは無い。にもかかわらず、init… 内で、
self.myString = str; を呼び、 [self setMyString:str]; に読み替えをやっているので、
おこられるんだよ。 myString = str; にすれば怒られないはず。
あと、GCC4.0 はGC オプションはあっても Obj-C2.0 の GC には対応してないんじゃ?
複合的なエラーを単一の原因と思っているから混乱しているように見えるなぁ。
977 :
名称未設定 :2009/11/10(火) 18:33:45 ID:lJ/hPUpN0
意図が伝わり難かったかも。>976 はインスタンス変数宣言の有無そのものは問題ではない、 という意味な。
978 :
名称未設定 :2009/11/10(火) 18:58:30 ID:C4ehbeyU0
宣言できるものは宣言するのが一番じゃないか?
979 :
名称未設定 :2009/11/10(火) 20:57:59 ID:NkYQ0vjO0
>>975 modern runtimeでインスタンス変数をsynthesizeした場合、accessorを介してのアクセスしかできません。
980 :
名称未設定 :2009/11/15(日) 00:47:40 ID:WiKkIg+60
NSOutlineViewの左端にある三角形のインジケーターって色変える方法と グリッド線の長さ調節とかってどなたかわかりませんか
981 :
名称未設定 :2009/11/15(日) 00:51:28 ID:nOoAMgZu0
NSTableView で row ごとに高さを変える方法はないでしょうか? リファレンスを見ましたが setRowHight では row ごとの指定ができません。 具体的には、NSTextFieldCell で文字列の折り返しを行い、それに合わせて 行の高さを調整したいのです。 よろしくお願いします。
982 :
名称未設定 :2009/11/15(日) 01:03:54 ID:WiKkIg+60
983 :
名称未設定 :2009/11/15(日) 01:07:06 ID:nOoAMgZu0
>>982 素早く的確な回答、ありがとうございます!
早速ご指摘のURLを参考にやってみます。
984 :
名称未設定 :2009/11/15(日) 10:47:44 ID:wlCzXFdR0
985 :
名称未設定 :2009/11/15(日) 21:30:47 ID:YTAFzzoP0
NSUme
986 :
981 :2009/11/15(日) 21:57:28 ID:1yIJ4ExW0
解決しましたが、今後役に立つ人もいそうなのでメモ NSTableView と NSOutlineView で行ごとに高さを変える方法 NSTableView の場合は - (CGFloat)tableView:(NSTableView *)tv heightOfRow:(NSInteger)row NSOutlineView の場合は - (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item いずれもデリゲートメソッド。
987 :
名称未設定 :2009/11/16(月) 00:01:05 ID:wlCzXFdR0
梅
988 :
名称未設定 :2009/11/16(月) 00:01:42 ID:WiKkIg+60
>>986 それ、メソッドのオーバーライドだけでできました?
自分のところでは結局カスタムセルをcopyWithZone:NULLでコピーしてから、
高さをそいつに計算させてから破棄、
表示はカスタムセル内のdrawInteriorWithFrame:〜内で改めて行うみたいな手間かけてやっとできたよ。
989 :
名称未設定 :2009/11/16(月) 00:45:54 ID:1CDGVn6l0
[[NSNotificationCenter defaultCenter] postNotification: ThreadWillTerminateNotification object: self];
990 :
名称未設定 :2009/11/16(月) 00:57:04 ID:Gt3OWBC30
宇目
991 :
981 :2009/11/16(月) 01:08:20 ID:GyEChZGO0
>>988 はい、オーバーライドしただけです。
ところが...
さっきできたと思ったんですが、表示後にテーブルビューをリサイズして、
行の折り返しが変化すると表示がおかしくなります。
何も変化を与えない状態ではうまくいってるのですが・・・
ご指摘の方法でやってみると改善するかもしれないので、やってみます。
992 :
名称未設定 :2009/11/16(月) 01:08:51 ID:5xzVwq/f0
while(![thread isAtEnd]) { [self ume]; } といいつつ手動umeなんすけどね
993 :
名称未設定 :2009/11/16(月) 01:14:58 ID:lq+Vm/xL0
>>991 俺も選択によってrow の高さを変更させようとしたけど、どうやら
- (CGFloat)tableView:(NSTableView *)tv heightOfRow:(NSInteger)row
を変更するだけでは、初期の高さの変更は出来てもそれからの動的な変更は出来ないっぽいんだよね。
994 :
991 :2009/11/16(月) 01:15:43 ID:GyEChZGO0
>>993 なるほど、困りましたねorz
どうしましょう...
995 :
名称未設定 :2009/11/16(月) 01:39:21 ID:Gt3OWBC30
流れよく読んでない適当な返答だけど、リサイズされるたびにreloadDataかnoteNumberOfRowsか何か呼べば tableView:heightOfRow: が呼ばれるんじゃないの?効率悪いやり方かも知れんとは思うけど
996 :
名称未設定 :2009/11/16(月) 01:42:08 ID:Gt3OWBC30
と思ったらnoteHeightOfRowsWithIndexesChangedってのがあんじゃん
997 :
名称未設定 :2009/11/16(月) 01:52:11 ID:lq+Vm/xL0
>>996 それ使ったらなんか妙なエラーが出るんだよね。
998 :
991 :2009/11/16(月) 02:34:57 ID:GyEChZGO0
999 :
991 :2009/11/16(月) 02:38:04 ID:GyEChZGO0
1000 :
名称未設定 :2009/11/16(月) 03:03:37 ID:k2OkWyp00
永遠なれ・・・ジグラット!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。