Cocoaはさっぱり!!! v ..
166:名称未設定
09/01/25 23:28:02 D0B6AaXh0
>>162
>Cのgetopt_longを使ったコードに#import <Cocoa/Cocoa.h>
>を書き足すだけで,コンパイル時にエラーになってしまうので,
うちでは Obj-C で getopt_long つかえるけど?
興味が有るのでどんなエラーがでるのか、
Cでは通るけど Obj-C ではとおらない最小限のソースを教えてください
167:名称未設定
09/01/26 07:36:50 gWcJYF5K0
>>165
質問に回答して返事がなかったら萎えるよね
もう答えるの無駄だしやめよ、と何度思ったか
168:名称未設定
09/01/26 09:50:58 QROzM0KB0
まぁ自分の勉強だと思えば・・・・。
他人に解説する際に気づくこともあるし。
169:名称未設定
09/01/26 11:26:26 mXilku0z0
>>166
#import <Cocoa/Cocoa.h>
#include <stdio.h>
#include <unistd.h>
#include <getopt.h>
extern char *optarg;
extern int optind, opterr, optopt;
int main(int argc, char *argv[]) {
int ch;
float time;
static struct option longopts[] = {
{"begin", no_argument, NULL, 'b'},
{0, 0, 0, 0}
};
opterr = 0;
while(( ch = getopt_long(argc, argv, "b:e:l:h", longopts, NULL)) != -1 ){
switch( ch ){
case 'b':
printf("Begin the begin\n");
break;
}
optarg = NULL;
}
}
です。
gcc -o test test.c -framework Cocoa
でコンパイル
170:名称未設定
09/01/26 11:32:13 VOr2YZM+0
168が良い事を言った
171:名称未設定
09/01/26 11:52:17 Wx1bIrtR0
>>169
それは #import のあとに、空白(0x20) だけでなくて
なぜか Unicode の no-break space (0xc2 0xa0) が入ってるからだと思う。
(テキストファイルをバイナリエディタで開いてみたら
何か変なことがわかるとおもいます。)
も一度 #import の行を消して書きなおしてみたらコンパイル通ると思うよ。
すくなくともうちの 10.5.6 の gcc では通った。
172:名称未設定
09/01/26 11:52:53 9akAS9r80
>>169
mv test.c test.m
173:名称未設定
09/01/26 21:54:16 QROzM0KB0
>>807
スレリンク(mac板)
こっちで再度質問して。
174:名称未設定
09/01/26 21:55:18 QROzM0KB0
173はゴバクっす。ごめんね。(≧ε≦)
175:名称未設定
09/01/27 11:26:15 9hNC4mxk0
ごめん ちょっと教えて
WindowsからSocketプログラム移植する時って
Cocoaで書き直した方が良い?
BDSソケットでもOK?
BDSソケットって移植性重視の低効率実装な可能性があるから心配
ちなみに元のPGは 独自プロトコルのTCPでスレッドで受信しているタイプです
176:名称未設定
09/01/27 11:34:15 4HjLNx/70
>>175
OS X の BSD socket は移植性のためのインターフェースじゃなくて
カーネルがはじめに実際に実装してるインターフェースです。
というか OS X は mach + BSD のハイブリッドなので。
というわけで心配せず BSD socket をそのまま使ってください。
Cocoa/CoreFoundation の socket インターフェースも
結局は BSD socket のうえに実装されてます。
177:名称未設定
09/01/27 12:05:14 9hNC4mxk0
ありがとうございます
カーネルがmach なので期待はしていましたが
何ぶんWindows生活が長くて
178:名称未設定
09/01/27 12:42:24 yG2s1pTo0
>> 173
誘導どうもです。
最近、Cocoaプログラミング始めた初心者です。
会社のMacで簡単な工数計算のアプリを組んでみたんですが…
数値入力用のTextFieldに全角で数字を打ち込む人間がいて困っています。
そこで、特定のTextFieldにフォーカスが移った時に、
半角英数入力に強制的に替えるにはどうすればいいのでしょうか?
環境は、MacOS X 10.4.11 & Xcode 2.0 です。
179:名称未設定
09/01/27 12:48:31 yISpEkrc0
"Only Roman Characters"が怪しい
180:名称未設定
09/01/27 12:50:09 wonKckub0
>>178
mouseDownとか適当なイベント拾ってAppleScriptで半角切り替えかな。
でも強制切り替えはどうだろね。
運用でカバーした方がいい問題のような希ガス
181:名称未設定
09/01/27 12:57:47 Qfd0k62B0
>>178
NSNumberFormatter 使えば済むのでは?
全角で入力されても内部で変換してしまえば良いし、他の文字が入ってたら
アラートも出せるし。って事ではないのかな???
182:名称未設定
09/01/27 13:02:13 SWJ660ES0
>>180 181
やはり強制切替は難しいですか;
ちょうどNSNumberFormatterを調べてたので、
全角→半角変換で対応してみます。
どうもありがとうございます。
183:名称未設定
09/01/27 14:08:33 L3yeV/fG0
>>182
検証してないけど、
URLリンク(lists.apple.com)
にText Input Sourceを使えばできるかもしれないってある
184:名称未設定
09/01/27 14:49:05 SWJ660ES0
>>183
やりたい事はその質問と同じく、IME入力モードの切り替えなんですが…
Cocoa APIにはIMEの切り替え手段がないような事が書かれてますね;
うちの環境は10.4.11なので、「Text Input Source Services」の方はダメっぽいですか…
英語が不得意なので、ちょっと敷居が高そうですけど、
「Keyboard Layout Services Functions」の方を調べてみます。
ありがとうございました。
185:名称未設定
09/01/27 15:41:46 RNAQzsjb0
素人が一言
キー入力せずにコピペで張る場合もあるぜ?
かな漢いじるよりNSNumberFormatter?で入力後の文字成型した方が現実には効果的だよ
まあかな漢制御したりキーボードイベント横取りしたりの方が
プログラマの征服感は満たされるけどね
186:名称未設定
09/01/27 15:57:33 L3yeV/fG0
ただ、自動で英数モードに切り替わるほうがUI設計として適切な場合もある(例えばNSSecureTextField)。
両方行うのが最適解。
187:名称未設定
09/01/27 16:01:41 hKpJgpLM0
半角モードに切り替わるテキストフィールド見た事あるけど
どうやってるかは知らん
188:名称未設定
09/01/27 16:21:16 SWJ660ES0
同じMac上で、FileMaker Proを使っているんですが、
そこのTextFieldの『フィールド選択時の動作』設定では
『IMEモードの切り替え:Romanモードに固定』というのがあるので、
てっきりAPIで提供されていると思っていたんですよね;
189:名称未設定
09/01/27 16:51:41 5ofWyrnr0
>>188
Carbon + Control Managerにはあったなぁ。
遠い昔(4,5年前か?)なのでなんと言うやつだったか、さっぱり思い出せないけど。
すまないがCocoaの同等の機能は知らんなぁ。
NSControlから ControlRefでも取り出せればできるんだろうがね。
190:名称未設定
09/01/27 17:06:41 9ySZEYTP0
script manager だったと思う。
191:名称未設定
09/01/27 18:37:09 yG2s1pTo0
>>189 >>190
Carbonにはあったんですか…
フィールドをタブで移動する時に、
備考入力欄なら全角に、数値や商品コード入力欄なら半角に…って感じで、
いちいち手作業で入力モードを変えなくていいので、
作業効率が全然違うんですよね;
いまさらCarbonで作り直す気力も時間もないし、
とりあえずは入力後変換で対応するようにしてみます。
ただ、お偉さんや同僚達は CocoaとCarbonの区別なんてつかないし、
説明しても理解できないので、
「何でFileMakerでは出来てるのに出来ないんだ?」とか
言われるのは悔しいですがw
皆さんありがとうございました。
192:名称未設定
09/01/27 18:56:28 cZYADSu20
URLリンク(cocoawiki.aerial.st)半角英数TextField
これ参考にならんか?
193:名称未設定
09/01/27 18:59:59 sxkNeV8c0
>>191
数字を入れるtextに全角で入力する馬鹿のために
なんでここまで苦しまなくちゃいけないんだって感じだよな。
194:名称未設定
09/01/27 19:03:14 y317W0/+0
>>191
TextView サブクラス
- (BOOL)becomeFirstResponder
{
KeyScript( smKeyRoman );
return [super becomeFirstResponder];
}
と、NSNumberFormatterで半角のみに...
195:名称未設定
09/01/27 19:05:27 y317W0/+0
ごめん、TextFieldのサブクラスだった...
196:名称未設定
09/01/27 19:07:26 L3yeV/fG0
そっかfield editorか・・・
197:名称未設定
09/01/27 19:18:23 yG2s1pTo0
>>192 >>194
おー!ありがとうございます!
なんかいけそうな感じですね。
今は、もう帰宅してしまってるので明日会社で試してみます!
感謝感謝です!!
>>193
自分もまさか全角数字を入力するやつはいないだろうと思ってたんですが、
「出来たから使ってね」って配布したその30分後、
「ちゃんと計算してくれないんだけど!」って言われましたw
198:名称未設定
09/01/27 19:21:22 5ofWyrnr0
気になって調べちゃったよ
10.5以降になってしまうが、
-[NSTextFieldCell setAllowedInputSourceLocales:]
ってのがあるな。NSAllRomanInputSourcesLocaleIdentifierで secure fieldと同じくromanに保てるようだ。
199:名称未設定
09/01/27 19:40:16 5ofWyrnr0
ごめん、よく読んだら 10.4だったね。
ちなみに Control Managerのも思い出した。
kControlEditTextKeyScriptBehaviorTagだった。これが198のと同じ動作だろうね。
こっちは PerefersRomanと RequiresRomanと指定できて便利なんだな。
まぁControlRefが無いとダメだけど。
このくらい用意して欲しいよな。。。
200:名称未設定
09/01/27 19:59:22 P+jy031y0
入力された文字列が数字以外ならエラーを返す関数なら
自作ので持ってるよ。
201:名称未設定
09/01/27 20:03:19 yG2s1pTo0
>>198
お手数かけます;
会社の環境では試せませんけど、今後の参考&勉強になります!
本当にありがとうございます!!
プログラマーとして入社した訳でないのに、
通常業務とは別の空き時間に、AccessVBAで事務処理プログラムを作らされてて
今回初めてMacのアプリを作ってみたんですけど、Cocoa楽しいっす!
202:名称未設定
09/01/27 20:08:23 yG2s1pTo0
>>200
勉強したいので、差し支えなければコードをお教え願えますか?
すみません;
203:名称未設定
09/01/27 20:59:16 MKYO8yw90
例えば、NSTextViewのサブクラスで
- (BOOL)conformsToProtocol:(Protocol *)aProtocol
{
return NO;
}
とかってやると、NSTextInputプロトコルを実装してないことになり、OSから仮名漢字変換のサポートが受けられなくなるので、
結果的に、入力モードは切り替わらないけど、半角英数字しか入力できないフィールドエディターが出来上がります。
もし、「勝手に入力モードが切り替わるのがウザイ」とか言われたときは、こういう手もあります。
204:名称未設定
09/01/27 21:16:07 MKYO8yw90
>> 200
もしかして、こんな感じ?
BOOL isInt(NSString* text)
{
return [[NSScanner scannerWithString:text] scanInt:NULL];
}
205:名称未設定
09/01/27 23:32:36 BQbhAN2S0
>>202
VBAを使ったExcelのアプリは泥縄式で貧弱のだったらなんとか作れるんですが、
Macのアプリも同じような感じで作れますかね?
206:名称未設定
09/01/28 01:59:06 6dpH/5D9i
>179のでオケーじゃないの?
IBでTextFieldの設定のAllows only roman charactersにチェックするだけじゃ?
加えてNumberFormatterでアルファベットをはじけば望む動作だと思うけど。
207:名称未設定
09/01/28 02:00:38 6dpH/5D9i
あ、>206は>>178へのレスです。
208:名称未設定
09/01/28 03:12:35 QC5LijlX0
こういうのはなんでもOgreKitに任せてしまうな。めんどくさいから。
209:名称未設定
09/01/28 09:34:22 OjUJEHAK0
>>206-207
>>178
>環境は、MacOS X 10.4.11 & Xcode 2.0
210:名称未設定
09/01/28 12:25:06 1DgzpuuK0
NumberFormatterでいいと思うけどなー
すいません、質問なのですが
環境は10.5 Xcode3.1です
シグナルのキャッチってどう書くのが良いのでしょうか?
具体的にはSIGABRTをキャッチしてエラーメッセージを表示したいです。
その際、可能ならアプリが終了しない様にしたいと思っております。
よろしくお願い致します。
211:名称未設定
09/01/28 13:52:13 ZgWOL2AA0
URLリンク(developer.apple.com)
が参考になると思います。
signal ハンドラ内では Cocoa みたいな大げさなものは呼べないので、
なんとかして signal を Cocoa のレベルまで持ってこないといけないですが、
その部分は上のサンプルコードからそのまま取ってこれるでしょう。
ていうかなんで Cocoa の GUI app にシグナルが飛んでくるの?
そっちのほうに興味があるな。
Apple メニューから再起動のばあいは quit の AppleEvent だし。
212:名称未設定
09/01/28 14:07:38 1DgzpuuK0
>>211
ありがとうございます。
一度、拝見させて頂きます。
Cで作ったライブラリ内の関数を呼んでるんですけど、
その引数に特定の値を与えるとデバッガに「シグナルを受信しました:"SIGABRT"」
が表示されるんです。
ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
213:名称未設定
09/01/28 23:10:46 oju538Ej0
NSIndexPathを使ってNSTreeControllerにある目的のオブジェクトを一発で取得ってできないのね
214:名称未設定
09/01/28 23:39:54 4dls5RrY0
>>213
[[[treeController arrangedObjects] descendantNodeAtIndexPath:path] representedObject]
215:名称未設定
09/01/28 23:45:24 oju538Ej0
>>214
なるほど、ツリーノード経由でアクセスすればいいのか
ありがとう!
216:名称未設定
09/01/28 23:57:25 ZgWOL2AA0
>>212
>ライブラリ側でエラーが出てるんですけど、こっちで処理できそうだったので…
SIGINT/SIGTERM と違って、SIGABRT はキャッチできるが復帰出来なかった
気がしてきた。というわけでライブラリ側を直さないと仕方ないんじゃないかな。
URLリンク(en.wikipedia.org)
217:212
09/01/29 10:45:15 yu3hvIXX0
>>216
うげー、まじっすか!
うっすらとそんな気はしてたんですが…
windowsのC++から同じライブラリを使用する時は
try〜catchで例外に飛んでくれるのに、macはtry〜catchだと落ちてしまう…
それで、シグナルのキャッチをしないといけないのかと思ったんですが、
復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
218:名称未設定
09/01/29 11:14:55 jq8EMf7e0
もうちょっと状況を説明してください。
使っているライブラリは C++ のもので、C++ の例外を送出してるんですか?
それなら mac でも捉えられない筈はないです。
try ... catch は C++ のものを使ってますか?
Obj-C の例外と C++ の例外は別だから、
@try ブロックでは C++ の例外は捉えられなかった... とおもいます。
Obj-C++ をつかう (ファイルの拡張子を .mm にする)とかして、
ふつうに try{ ...} catch で捕まるはず。
SIGABRT がでているのは、多分 C++ の例外が捉えられずに標準の
terminate() が呼ばれて、それの標準の実装であるところの abort() が
呼ばれてるからでしょう。
219:名称未設定
09/01/29 11:17:56 jq8EMf7e0
>>217
>復帰が無理ならキャッチしてもアラートを表示するのが精一杯って事か…
あと、この文脈で復帰というのはシグナルハンドラから抜けたらという
ことだから、SIGABRT がでた時点で GUI をいじってる暇はないです。
220:212
09/01/29 11:29:16 yu3hvIXX0
むーーっちゃ参考になりました!!
解決致しました!!
>@try ブロックでは C++ の例外は捉えられなかった... とおもいます。
まさにこれでした…
ライブラリはC++でC++の例外を送出しておりました。
それを@tryで捉えようとしていた為に今回の様な事になっていたようです。
普通のtry〜catchを使用した所、例外処理に飛びました。
ホントにどうもありがとうございました。
…今回のは自分の中でかなり勉強になった。w
221:名称未設定
09/01/29 11:54:06 jq8EMf7e0
解決して良かったです。今後は
「A というのを解決するために B をしたい。しかし B の仕方が分からない。」
とい う構造のときは、B を質問するんじゃなくて A を質問してくださいね。
(今回は A: C++例外を取り損ねていた B: SIGABRT をキャッチしたい)
222:212
09/01/29 12:02:51 yu3hvIXX0
あ、ホントですね…
改めて見ると質問おかしいですね(/▽*\)
以後気をつけます。。。
223:名称未設定
09/01/29 14:09:30 adGsEShc0
今objective-cのアクセッサメソッドを勉強中なんですが、
NSArray* gooに対するアクセッサを例に質問させていただきます。
このgooのアクセッサメソッドの定義についてなんです
- (void)setGoo:(NSArray*)aGoo
{
// @goo = [[NSArray alloc] initWithArray:aGoo];
// Agoo = aGoo;
}
@は新たにメモリ領域を確保しています
Aはそのまんまポインタを代入しているのですが、
こういうのはそれぞれ使い分けていけばいいのでしょうか?
それとも・・・こうだという書き方があるのでしょうか?
224:名称未設定
09/01/29 14:15:22 noz0c/Ci0
書き方は色々あるけど、渡されたオブジェクトをretainするのが普通。
- (void)setFoo:(id)bar
{
if(foo != bar) {
[foo release];
foo = [bar retain];
}
}
みたいな感じかな
225:名称未設定
09/01/29 14:26:11 jq8EMf7e0
うむ。いずれ (2) だと release しすぎでクラッシュするよ。
retain/release/autorelease はきちんと理解しましょう。
226:名称未設定
09/01/29 14:36:15 ek2lYM/y0
retain, release, autoreleaseの話題はそろそろテンプレ化してもいいんじゃねぇの?
227:名称未設定
09/01/29 14:36:35 adGsEShc0
>>224
いろいろ参照していると
確かにそんな書き方をいくつか見かけました。
ただfooのメモリ領域を新たに確保したい場合はそれでは駄目ですよね。
そのときの書き方とかもありますか?
あとゲッターについてもなんですが、
普通に
-(NSArray*)foo
{
return foo;
}
でいいですか?
228:名称未設定
09/01/29 14:37:18 adGsEShc0
>>225
なるほど。確かにそうですよね。
229:名称未設定
09/01/29 14:44:33 qvTjmqpK0
>>227
興味本位で聞くけど、なんでそんな事をしたいの?
230:名称未設定
09/01/29 14:57:21 um6KdJm70
Thread safeを考慮しなくていいという前提で行くけど
Setterは
- (void)setHogehoge:(id)newHogehoge
{
if(hogehoge != newHogehoge) {
[hogehoge autorelease];
hogehoge = [newHogehoge copy];
}
}
Getterは
- (hogehoge*)hogehoge
{
return [hogehoge copy] autorelease];
}
とか、copyでやるのが遅いが安全かなと思った。
231:名称未設定
09/01/29 15:02:55 qvTjmqpK0
整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。
232:名称未設定
09/01/29 15:08:47 /bmL0ZO50
NSArrayとかNSDictionaryとかだとdeep copyするかどうか
と考え込みすぎてしまいます
233:名称未設定
09/01/29 16:48:52 adGsEShc0
返信レス遅くなってすみません。
いろいろな意見を聞かせて頂けて本当にありがとうございます。
みなさんがどの辺を意識しながらプログラムしているのか、ちょっと分かった気がします。
234:名称未設定
09/01/30 00:31:04 x4D9q//I0
ターゲットが10.5以上ならしっかりとしたメモリ管理を覚えるのは後回しにしてもとりあえずプロパティを学べばおk
235:名称未設定
09/01/30 02:55:33 1T9rFWEx0
>>230
確かにこれはパフォーマンスが気になるような場合はちょっときついかな。
それに getter で autorelease してるなら setter の方は release でいいんじゃないの?
236:名称未設定
09/01/30 08:26:27 tnqIJAcF0
copy するかしないかは場合によるでしょう、
安全性のもんだいだけじゃないよ。
GUI のクラスが渡されたときにそれを copy しても仕方なかったりするし。
NSString とか NSArray ならともかく。
237:212
09/01/30 12:22:51 Xk99m0ql0
くそっ、昨日いけたと思っていtry〜catchでSIGABRT捉える問題なんですが、
Releaseでビルドすると捉えれずに落ちてしまう…
debugだとデバッガがアタッチされてるからうまい事いってたのかなぁ…
238:名称未設定
09/01/30 13:45:42 tnqIJAcF0
>>237
ビルド条件で挙動が変わるってのはなんかポインタの扱いが間違ってるとか
そんなバグがあるんだとおもいます。
うまく動いてるときでも偶然うまくいってたとおもったほうがいいとおもう。
あと、いっとくけど SIGABRT を捉えられてるんじゃないよ。
C++ の例外は、だれもキャッチしないで main 関数の外に抜けると
ランタイムが abort() に変換して、それが結局 SIGABRT になる。
だから、あなたが捉えてるのはあくまで C++ の例外のはずです。
set_terminate とか使って例外が底抜けているか調べたら?
239:名称未設定
09/02/01 08:21:57 n9A0C94C0
>>231
>整合性を保つために俺はオブジェクトをコピーしないようにしてるけど。
>どうしても必要なら、アクセッサに渡す前に複製すればいいわけだし。
って具体的に書くとどういう操作ですか?
240:名称未設定
09/02/01 09:35:31 1mYsSfAu0
231じゃないが、
オブジェクトは>224にあるようなsetterのコードを使っていて、
呼び出し元は、setterに渡す前にcopyしてから渡すってことだとおもう。
copyを使うかどうかは、外部と内部とで共有するオブジェクトを
排除したいかどうかだろうね。
241:名称未設定
09/02/01 14:49:50 yyoukxzn0
>>223
URLリンク(developer.apple.com)
この辺の@propertyによるsetter/getterの実装と、その選択を考えれば
どういう風にするのがいいか解ると思う。
242:名称未設定
09/02/02 03:02:07 oWvyvjyR0
>>240
>copyを使うかどうかは、外部と内部とで共有するオブジェクトを
>排除したいかどうかだろうね。
もっと現実に即した説明で言うなら、オブジェクトのそのときの値に用があるのか、
オブジェクトを参照したいのか、みたいな感じかと。
例えば NS(Mutable)Number や NS(Mutable)String を setter に渡して何かの最後の値を
記憶しておくようなクラスを作ったら、copy しておかないとおかしなことになりうる。
そうでなく、例えば NSWindow とか、値に用があるのなくそのオブジェクトを参照したい場合
は retain と。
-copy に答えるオブジェクト(NSCopying 準拠)かどうかというのもある。
243:名称未設定
09/02/02 03:14:22 oWvyvjyR0
しまった、NSMutableNumber って何だよ俺。
244:名称未設定
09/02/02 06:27:53 TONCedf+0
>>243
多倍長整数同士の演算を実装したクラスだな。
俺も持ってる
245:名称未設定
09/02/02 13:54:51 2xCIDXB+0
>NSMutableNumber
NSNumber を継承して、値に意味の中心があるクラスとして、NSCopying protocol 準拠で
copyWithZone:(NSZone) の実装をされたんでしょうか?
246:名称未設定
09/02/02 13:56:34 yqjQEfKg0
そんなにいじめるなよ
247:名称未設定
09/02/02 14:01:26 2xCIDXB+0
それとも、NSMutableCopying protocol 準拠
- (id)mutableCopyWithZone:(NSZone *)zone
の方でしょうか?
248:名称未設定
09/02/02 14:03:09 2xCIDXB+0
あれ?タイポだって事?それなら失礼。
でも、実際、そういうクラス作るとしたら、準拠でしょうか?
249:名称未設定
09/02/02 14:34:12 RTJ7jXP10
NSNumber を単純に継承しても動かんよ、クラスクラスタだから…という話は
置いておいて。NSMutableCopying Protocol のリファレンスには、
> Only classes that define an “immutable vs. mutable” distinction should
> adopt this protocol. Classes that don’t define such a distinction should
> adopt NSCopying instead.
とあるので、不変クラスが無ければ、NSCopyingだけで良いんじゃない?
250:名称未設定
09/02/02 14:59:15 oWvyvjyR0
>>244
>多倍長整数同士の演算を実装したクラスだな。
そうそうw
逆に、immutable で演算もないのは「基本、数値のラッパーでしかないクラスなのでよろしく」
ということなのかな。
251:名称未設定
09/02/02 18:45:00 2xCIDXB+0
よろしく。。。何なのでしょう?
252:名称未設定
09/02/02 19:13:04 L7cRbMRK0
>>251
Yorosiku Protocolを知らんのか?
253:名称未設定
09/02/02 21:35:57 AAETqkqJ0
Bonjourなら知ってる。
254:名称未設定
09/02/02 21:41:24 AAETqkqJ0
Bonjourが出たついでなんだけどさぁ、NSSocketを使用して
リモート間のコンピュータ制御を行なった人います?
BonjourがCFSocketを使用しているせいか、こちらのAPIを使用する人がいないよね。
別にBSDSocketを使用しているからあまり問題ないんだけど・・・・・・
こいつの使い方が終に分からなくて、悔しい思いをしたので。
255:名称未設定
09/02/03 00:07:16 2ttErtYe0
NSSocketPort じゃなかったっけ?これは Distributed Objects 用でしょ。
だから一般的なソケット操作にはつかえません。
でも DO はやってみると案外面白いよ。
単一マシン内の二つの app でやっても充分面白いです。
他のプロセスの Obj-C クラスをまるで自分のプロセス内の
クラスであるかのように自在に操れるからね。
AppleEvent より全然つかいやすいとおもうのだが...
256:名称未設定
09/02/03 01:27:59 2ZhaM9y40
[me fuck]
257:名称未設定
09/02/03 06:25:45 gjuIaaik0
>>254
Bounjour でサーバのサービスを発見して NSSocketPort 経由で繋いで後の通信は DO、
みたいな、なんちゃって分散システムを作ってる & 使ってる。
セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。
かなり楽ちん。
まあ実際にはエラー処理とかいろいろあるが... あとこれっていんちき Xgrid? という説もあるw
258:名称未設定
09/02/03 07:13:28 btozHLBi0
>>257
heartbeatの処理とか入れてる?
処理投げてなかなか帰ってこないサービス内容とかもあるんで
うちは接続したら定期的にheartbeat返すようにしてる
259:名称未設定
09/02/03 09:59:34 hBT6haPh0
ハートビート...
いい響きだね
260:名称未設定
09/02/03 12:03:48 l8QIYOaqi
エターナルフォースハートビートモーターズ!
261:名称未設定
09/02/03 12:21:34 qYl1wxUJ0
質問というかただの興味ですが、
メソッドを書く時の書式は通常
- (NSString *)hoge:(NSString *)string;
とオブジェクト名とアスタリスクは離しますが、C的に書く必要がある場合どうでしょう?
NSString * getHoge(NSString *string);
この場合最初のアスタリスクの両側が空いているのに違和感を覚えるのですが、みなさんどう書いてます?
Apple公式でこういった書式のコードが見られるといいんですけど。
262:名称未設定
09/02/03 12:33:04 C28DxKEb0
リモート人間接続をするにはどうすれば
263:名称未設定
09/02/03 12:40:24 WATf/n1w0
普通に話せよw
264:名称未設定
09/02/03 14:09:23 G1cDZxPk0
たとえば、InDesignなどのDTPソフトだと、フォントフォルダ(たとえば、/Library/Fonts)に、
フォントをFinderで追加すると、すぐに使用できるようになるのですが、
自作アプリでコピーをすると、いつまでたっても、フォント情報が更新されません。
InDesignが、フォントフォルダに変更があったよ〜、的ななんらかのシグナルを
キャッチしていて、Finderはそのシグナルを発してるのでは、
と想像しているのですが、そのシグナルを発生させる方法はあるのでしょうか。
265:名称未設定
09/02/03 14:12:07 WATf/n1w0
>>264
むしろ自作アプリで直接コピーするんじゃなくて、Finderにコピーをさせればどうだろう。
266:名称未設定
09/02/03 15:13:30 2ttErtYe0
>>264
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
267:名称未設定
09/02/03 15:16:29 2ttErtYe0
>>261
URLリンク(developer.apple.com)
関数の場合は * の両側をあける、ivar の場合は左側だけあけるんだと思う。
268:名称未設定
09/02/03 15:27:44 Futh7gDNi
FSEvent使うってのは??
269:名称未設定
09/02/03 16:28:09 qYl1wxUJ0
>>267
おお、すっきりしました。ありがとうございます。
270:名称未設定
09/02/03 18:43:59 nN7f7LmV0
カスタムのビューとスクローラーとそのイベント対応について質問させて下さい。
NSViewとそれをスクロールするNSScrollViewを、共にサブクラス化し、
共にacceptsFirstResponderをオーバーライドしてYESを返すようにしました。
これで、page up/downキーが押された場合は、NSViewのサブクラスで
オーバーライドした pageUp: と pageDown: が呼ばれます。
で、homeキー、endキーが押された場合を取りたいのですが、
NSResponderのスクロール関連のどのメソッドをオーバーライドしても
呼ばれないのですが、keyDown:から自分で判別するしかないのでしょうか?
271:名称未設定
09/02/03 19:06:35 4NqLeFNd0
>>270
scrollToBeginningOfDocument:とscrollToEndOfDocument:
NSResponderで定義されているメソッドでは、ありませんが。
272:名称未設定
09/02/04 09:05:27 327qCR/u0
>>257
>セキュリティは気にしてないのでw Bonjour で見えたら自動的に接続。処理は DO のメソッド
>呼び出し投げる。サーバが消えたらやめる。サーバのリストは Binding を使って表示&管理。
この方法、凄く気になります。どこかにサンプルコードありませんか?
273:名称未設定
09/02/04 09:33:10 eVwbmqQc0
URLリンク(www.borkware.com)
の Chap. 18, 19 を解読してみたら。本も買ったら勉強になります。
274:名称未設定
09/02/04 13:08:09 yVzPM0e80
サンプルプロジェクトを、プロジェクト名は同じですが改造して、アプリを試作しました(A)。
(アイコン入替え、クラス追加等含め)
更に、それを少しだけ改変した別バージョン(B)を、別個に作ろうと、上記元の改造版を Finder
でフォルダごと複製して、プロジェクト名は同じで、ビルド作業もできておりました。
ところが、その際、(恐らく)Default.png か、Icon.png を更新して、ターゲットのクリーニング後、
ビルドは出来ても、アプリ起動した後、または途中で止まってしまう様になりました。
コードを、修正前の状態になるまで、コメントアウトしても、状況が変わりません。
こういう場合原因は何でしょう?
275:名称未設定
09/02/04 13:29:00 eVwbmqQc0
エラーがデバッガ画面に出てるはずだからそれを説明しろ。
ここ読んでる人だってエスパーじゃないよ。
とりあえず Default.png / Icon.png ももとに戻して動くかみてみたら?
276:名称未設定
09/02/04 14:16:27 vG3Eq+0R0
実機上でBundle ID同じアプリが2つ出来て混乱しているとか。変えてみ。
277:名称未設定
09/02/04 14:32:41 GLh6l/ao0
>>276
ありえる。お前エスパーだろ?
278:名称未設定
09/02/04 16:48:00 pU891sJp0
NSTableDataSouceプロトコルの
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
メソッドの引数tbを使用して
テーブルのラインナップを行う行為は常識はずれですか?
ただこのメソッドは何度も呼び出されるので、
一度呼び出されたときだけこのメソッドないでテーブルのラインナップを
する関数を呼び出しています。
簡単に用法をしめすと
-(id)tableView:(NSTableView*)tb objectValueForTableColumn:row:
{
if(count == 1)
{
/*
tbを使用してテーブルのラインナップ
カラムを追加したりセルをセットしたり。
*/
}
// 以下はreturnでセルに値を代入していくプログラム・・・
}
279:名称未設定
09/02/04 17:00:13 /jro+NId0
普通はnibで既にカラムもセルもセットしておく。
どうしても動的に変えたいときはawakeFromNib:でやるかな。
280:名称未設定
09/02/04 17:06:55 pU891sJp0
確かにほとんどの参考プログラムはそうですよね。
ただテーブル数が多い&動的
ということもあって、別に動くには動くしで・・・・
でも皆さんから見てどうなんかな?って思ったんで質問させてもらったんですが・・
281:名称未設定
09/02/04 19:03:12 AZEIygKK0
動的に変更したいにしてもなんらかのトリガーはあるんだろうから
そこから別途カラムを設定するメソッドを呼んだ方がいいと思う
実際の動作から変数を作ってどうこう、とやり出すと
予想外なところでif文に該当してバグの元になる
282:名称未設定
09/02/04 21:24:41 Gh/9lkTr0
iPhoneアプリ作成を始めた初心者です。Hello World! から勉強してます。
TableViewは作れましたが、TabelViewからタッチして別の画面
(別のcontroller)に飛びたいときはどうすればいいですか?
小さな複数のアプリをTabelViewでまとめたいのですが。
283:名称未設定
09/02/04 21:38:37 kElp6NwL0
>>282
iPod touch/iPhone ネイティブアプリ製作 ver.8
スレリンク(mac板)
284:282
09/02/04 21:45:34 Gh/9lkTr0
わかりました。そちらのスレでもう一度聞いてみます。ありがとうございました。
285:名称未設定
09/02/04 22:10:20 nazm8P890
>>284
そしたらこっちでの質問を取り下げた方がいいよ。
286:270
09/02/05 00:02:28 vPXIdXg90
>>271
NSViewのサブクラスにそれらを実装してみましたが、呼ばれませんでした。
少しググってみましたが、それらはNSTextViewで可能な方法ではないでしょうか。
何であれありがとうございました。
287:名称未設定
09/02/05 11:15:29 qtw79+lW0
テキストフィールドのあるモーダルダイアログを表示し、
テキストフィールドに日本語を入力し確定する前(下線が付いたまま)に
ダイアログを閉じるとクラッシュしてしまう…
これはなんなのでしょうか…
288:名称未設定
09/02/05 11:21:22 aBVo+1GJ0
>>287
ダイアログを破棄した後にUIを参照しようとしてない?
フォーカス関係の問題なら、フォーカス外してから閉じるとか。
289:名称未設定
09/02/05 11:22:28 ih/Ab1m90
>>287
クラッシュログはなんていってるの?
つかってるのはことえり?ATOK?
それとは別問題として、モーダルダイアログは多用しないほうが...
せめてモーダルシートにしましょう
290:287
09/02/05 12:19:00 qtw79+lW0
レスありがとうございます!
>>288
モーダルダイログを閉じる前にモーダルダイアログContorllerクラス内のメンバ変数に
UIから取得した値を保持しretainしております…
その後にモーダルダイアログを閉じ
→モーダルContorllerクラスからget○○で呼び出し元ウィンドウでモーダルのUIの値を取得
→モーダルContorllerクラスを破棄
これマズイでしょうか。。。
フォーカスを手動で外してモーダルダイアログを閉じた場合はクラッシュしませんでした。
プログラム内からmakeFirstResponderで別のコントロールにフォーカスを移動してから閉じたらクラッシュしました…
>>289
つかってるのはことえりです。
ログは長いので最後の辺りを…
Thread 0 Crashed:
0 libobjc.A.dylib 0x90a59387 objc_msgSend + 23
1 com.apple.AppKit 0x93356003 -[NSApplication runModalForWindow:] + 227
ホントはシートを使いたいのですが、要望でダイアログになりました…
言い忘れたのですが、10.5では正常に動作致します。
10.4の場合のみ現象が起こってしまいます。。。
291:名称未設定
09/02/05 12:47:23 k3HvMYJw0
すみません、自力で解決できなかったので教えて下さい。
NSViewのサブクラスを作り、NSBezierPath *contentPath(矩形)を持たせて
います。で、NSMutableArray に矩形ベジェを持たせていて NSArrayController で
前述のビューのcontentPathを入れ替えて再描画させる、というものを作りました。
制御自体はうまくいって、Arrayの中身を描けるのですが、パスのライン幅が一部
太くなってしまいます。挙動としては、矩形は幅または高さだけ変えたもの
(originは一緒)を描かせたときに古い矩形とオーバーラップする領域のみ線幅が
太くなります。
で、クリッピングが関係しているのかなと思い、wantsDefaultClipping をオーバー
ライドして NO を返すようにしてみたら、線幅は一定にはなったものの、今度は
設定した線幅 1.0 よりも太く書かれてしまいます。
どうすれば解決できますでしょうか、お知恵をお貸しください。
292:名称未設定
09/02/05 12:55:09 ih/Ab1m90
>>290
それは retain/release がどっかでおかしくなってるんだとおもうけど。
ちゃんとやればもんだいないはず。NSZombie とかつかって
誰が二重 release してるかしらべてみては。
あと、僕の実経験では、Interface Builder でよく
Window のインスペクタで "release when closed" をチェックしてしまって
それのせいで release しすぎになりますが...
293:名称未設定
09/02/05 13:19:19 k3HvMYJw0
>291 です……自己解決しました。原因は drawRect:[contentPath bounds] と
やったせいで、パスの線幅分のオフセットをやっていなかった為のようです。
とほほ…
294:名称未設定
09/02/05 16:30:33 MZKKxZ3Z0
>>290
パネルがrelease when closedになってるとか?
295:290
09/02/05 17:03:08 qtw79+lW0
release when closedになってたので、チェックを外すと今度は10.5でおかしくなったw
日本語入力したテキストフィールドにmakeFirstResponderでフォーカス移動して
postEventでreturnキーを送ってテキストフィールドを完全に確定(?)させてから
モーダルを閉じたら10.4でいけた…
一応NSZombieだと、やっぱreleaseしたものにアクセスしてるって出た…(10.4のみ)
わけわかめだ…
296:名称未設定
09/02/05 20:39:25 p6wlshAm0
>>286
よく見たら、keyDown:をオーバーライドせずに、pageUp:とかだけをオーバーライドしてたんですね。
そうじゃなくて、
- (void)keyDown:(NSEvent *)theEvent
{
[self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
}
- (void)doCommandBySelector:(SEL)aSelector
{
if([self respondsToSelector:aSelector])
{
[self performSelector:aSelector withObject:self];
}
}
とやると、
page up → scrollPageUp:
page down → scrollPageDown:
home → scrollToBeginningOfDocument:
end → scrollToEndOfDocument:
となります。
297:名称未設定
09/02/05 23:28:22 ih/Ab1m90
>>295
それはあきらかにメモリ管理のバグなので、対処療法的に
こういう閉じ方ならクラッシュしない、という解決法ではなくて
どっかで retain/release のミスがあるのでそれをみつけてください。
まあ納入期限とかなければのはなしだけど。
clang static analyzer は
URLリンク(clang.llvm.org)
強力なのでいちどつかってみたら?
298:名称未設定
09/02/08 11:24:31 x/17hb0Z0
NSColorでも同じだと思うんですが、UIColorでalloc initでオブジェクト付くってラベルのtextColorに代入したときUIColorオブジェクトはどっかでreleaseしなくていいんでしょうか?
self.lbl_kekka.textColor = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];
299:名称未設定
09/02/08 12:17:18 cbLnK3Uq0
当然allocしたオブジェクトは、自分が責任を持ってreleaseする。
UILabelのtextColorプロパティは
@property(nonatomic,retain) UIColor *textColor;
となっていてretainされるので、代入した直後にreleaseしてかまわない。
self.lbl_kekka.textColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
とすればautoreleaseされているのでreleaseする必要はなく、おそらくそのメソッドが終われば
releaseされる。
allocで生成するオブジェクトは、主にインスタンス変数などに長く保持したい場合などに使う。
300:名称未設定
09/02/08 13:40:23 cbLnK3Uq0
後で気がついたが、releaseする場合は
self.lbl_kekka.textColor = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
[self.lbl_kekka.textColor release];
ではなく、
UIColor *color = [[UIColor alloc] initWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
self.lbl_kekka.textColor = color;
[color release];
な。
NSArrayやNSDictionaryにオブジェクトを追加したり
UIViewにaddSubview:したオブジェクトもretainされるので、直後にreleaseしてよい。
301:名称未設定
09/02/08 15:41:18 vQKSQI6y0
self.label.textColor = [UIColor colorWith~~]; でおk
302:名称未設定
09/02/08 17:29:03 x/17hb0Z0
なるほど!ありがとうございます。よくわかりました。
autoreleaseされるcolorWithメソッドもあったんですね。
303:名称未設定
09/02/09 16:27:22 xx/grS5S0
シンガポールの9歳少年がiphoneアプリの開発。
しかもこの少年2歳のときからコンピュータ使って
いまやすでに6言語をしようできるとか・・・・・。
スレッド間通信で悩んでいる俺もこんな英才教育受けてたら
いまや天才ハッカーだったのに・・・・・。
304:名称未設定
09/02/09 16:34:36 9F+2O8Cp0
まあ、その子の父親がそっち系の人だからね。
しょうがないよ
305:名称未設定
09/02/09 16:36:53 r0qQWs5t0
実はオネェ系。
306:名称未設定
09/02/09 17:02:51 svdYosUm0
そっち系ってどっち系か気になる
307:名称未設定
09/02/09 17:03:51 SccJ/7Eo0
はぐれ刑事情熱系
308:名称未設定
09/02/09 17:11:06 9drXTDxV0
>>303
アジアには1ヶ月飲まず食わずの少年も居るよ。
鵜呑みにしない方がいい。
309:名称未設定
09/02/09 17:16:43 QiGMMDTS0
父親が作ってるだろ、実際は。
話題性があれば、無駄に売れる。
310:名称未設定
09/02/09 17:21:15 gsT/KdBz0
以前、10歳でアセンブラバリバリ使いこなす小学生に会ったことがある。
子供は物覚えが速いから、3Dとかの複雑な数学の必要なもの以外は余裕だよ。
311:名称未設定
09/02/09 17:23:48 0LhoQ2uS0
まあ、ポケモン数百匹のデータと対戦法すべて覚えてるガキなんかも多いしな。
312:名称未設定
09/02/09 17:33:17 mKmE+zE/0
>>310
それかつての俺だ
まだ覚えてるかな
21 がLD HL
EDがIXのプレフィクスだっけかな
ハンドアセンブルは今にして思えば無駄な作業だったな・・
当時はセクションの考えもなかったし
>>311
そういうことだねw
313:名称未設定
09/02/09 17:35:49 EdHXtXj80
ちなみに、いまハンドアセンブル用のシート売ってるのかな?ニモニック書けるやつ
8080,Z80時代はばりばり書いてたなあ
314:名称未設定
09/02/09 18:13:19 bsNxoMZui
アセンブラ買う金が無かったから、ハンドアセンブルしてました。
315:名称未設定
09/02/09 18:15:52 yzs1V3zWi
逆アセンブラは面倒だったんで、自分で書きました。
316:270,286
09/02/09 19:11:05 /J57R7wN0
>>296 それでできました!
レスポンダーチェーンは知っていましたがキーバインドは単語だけ聞いた事ある、という感じでしたが勉強になりました。
ありがとうございました。
317:名称未設定
09/02/09 21:26:07 j607E4t30
Mac OS X だと gas 以外に nasm も付いてくるし、逆アセンブルもできる (otool か gdb)。
なんて恵まれた環境(w しかし Mach-O がマイナー(w
x86 の ObjC のメソッドでは、self が 8(%ebp)、SELが 12(%ebp)、第一引数が 16(%ebp)。
これ豆知識。
と無理矢理 Cocoa に結びつけてみる。
318:名称未設定
09/02/09 21:43:05 JA/hqyCL0
URLリンク(sourceforge.jp)
QtもCocoa対応になるのか
あれ、前ってCarbonだったけ?中までチェックしてなかったなぁ
319:名称未設定
09/02/09 22:23:43 9drXTDxV0
藤子不二雄で育った世代が集まってるな。
320:名称未設定
09/02/09 23:48:04 aEihI9Eo0
>>318
レパード発売直前に 64 bit Carbon GUI の廃止が発表されて
クロスプラットホームのひとはみんな慌てて Cocoa になってますよ。
Qt しかり、Open Office しかり。
Qt の開発者のブログはこのあたり
URLリンク(labs.trolltech.com)
URLリンク(labs.trolltech.com)
もっと最近のポストもあるけど、初期のほうがおもろい。
321:名称未設定
09/02/10 08:06:37 lUyxbS2f0
>>319
残念、テッカマンとサンダーバードで育ちますた。
あと日曜のliving tomorrow
あの番組によればとっくに核融合炉稼働、電車はすべてリニア、衛星軌道の太陽電池発電などが現実のものになってなければいけないのだが・・
21世紀にもなって相変わらず石油依存だったり雇用不安真っ盛りだったり
あげくの果てにハゲもダウンするしなんだかなもう。
322:名称未設定
09/02/10 08:18:35 HCu6PKfT0
テレ東と閣下で育った俺が来ましたよ。
>>320
MSのOfficeはどうなんだろうって思って2008でotoolしてみたけどいまいちどうなってるんだかよくわからん。
Carbon.frameworkあるから普通にCarbonだとは思うがPowerPlant.frameworkがあるのが気になる。
Xcode移行したんじゃなかったのか?
>>321
ひとまずAppleには雇用不安も不景気も無縁だと思う。
あとJobsの後継者探しも問題ないだろう。
ここにいる連中を見る限り。
URLリンク(www.apple.com)
323:名称未設定
09/02/10 09:25:02 A84c3i310
>>322
PowerPlant は XCode で使えるユニバーサル版が公開されてるよ。
MS がつかってるのは彼らなりの手の加わったバージョンだと思うが。
URLリンク(sourceforge.net)
まあ Office は 64 bit にする必要もないから Carbon GUI のままでいいのでは...
Adobe はがんばって Cocoa に書きなおしているらしい。
324:名称未設定
09/02/10 09:32:01 HCu6PKfT0
>>323
Freescaleがオープンソースで公開してたのか。知らなかった。
Win側のOfficeは次のバージョンの14はWeb志向らしいし64bit化はないかもな。
Adobeが書き直し中で、MSは64bit対応予定無しだとすると、後残った大手ベンダーはどこだ?
325:名称未設定
09/02/10 09:47:28 A84c3i310
>>324
Mozilla Firefox も Firefox 3 を期に Cocoa になったらしいよ。
URLリンク(boomswaggerboom.wordpress.com)
Java GUI も Swing は Apple 自身が Cocoa 化したはず。SWT はいまがんばって書き換え中。
326:名称未設定
09/02/10 11:32:28 a+EfxJDo0
int型の数字をNSDictionaryに格納するにあたって
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:5],
@"id",nil];
ってしたんだけど、取り出したときに
int student_id = [dict objectForKey:@"id"];
printf("student_id = %d",student_id);
するととんでもない値が出力されます。。
一応キャストしてみても駄目でした。
int student_id = (int)[dict objectForKey:@"id"];
正しく取り出せていないのでしょうか?
327:名称未設定
09/02/10 11:37:35 HXxSGtyR0
>>326
>int student_id = [dict objectForKey:@"id"];
それNSNumberのオブジェクトのまま
int student_id = [[dict objectForKey:@"id"] intValue];
でないの?
328:名称未設定
09/02/10 11:38:03 Ie9BcbwC0
objectForKey:で取り出せるのはint型ではなく、格納したときのNSNumberオブジェクト
int student_id = [[dict objectForKey: @"id"] intValue];
329:名称未設定
09/02/10 11:38:31 Ie9BcbwC0
かぶったすまん
330:名称未設定
09/02/10 11:39:44 a+EfxJDo0
>>328
即レス
ありがとう。
上手くいきました。!!!!!!!!!!!!!!!!!!1
331:名称未設定
09/02/10 11:42:33 a+EfxJDo0
>>327-328さんにです。本当にありがとうございました。
332:名称未設定
09/02/10 13:45:11 4mx4xlFL0
Finderで既に存在するファイルと同名ファイルをwriteTo系のメソッドで保存しようとした時に、上書きせずに自動で別名ファイルにする方法はありますか?
もしくは自動で変更された作られる予定の別名ファイルのパスを取得するようなメソッドはありませんか?
title → title 2 みたいな感じのです。
今はディレクトリの中をループで回して同名ファイルのチェックと保存先のファイルパスの変更をしているのですが、一発でパスを取得できる方法があるのかなと思いまして。
333:名称未設定
09/02/10 14:35:44 A84c3i310
[[NSFileManager defaultManager] fileExistsAtPath:@"..."] で出来るよ。
NSFileManager / NSWorkspace のメソッドを確認してみてください。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5007日前に更新/246 KB
担当:undef