【Cocoa】Macプログラマのスレ【Objective-C】

■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
垢版 |
2008/06/23(月) 17:06:37
Apple Developer Connection
http://developer.apple.com/jp/

関連スレ
Macでプログラミング{8}
http://pc11.2ch.net/test/read.cgi/mac/1195385771/

Objective-C [ObjC part:3];
http://pc11.2ch.net/test/read.cgi/tech/1186543111/

【マック】Macintoshプログラミング質問箱
http://pc11.2ch.net/test/read.cgi/tech/1113058054/

Cocoaはさっぱり!!! version.X(10)
http://pc11.2ch.net/test/read.cgi/mac/1211290055/

Xcode part6
http://pc11.2ch.net/test/read.cgi/mac/1201693264/
233220
垢版 |
2012/05/12(土) 12:03:31.33
続きです。
>>オーナーシップの委譲を利用すれば別に同期をとらなくても、あっちもこっちもわりと勝手にできる
すみませんこれがいったい何のことをさしているのかわかりません。
結局initでスレッド生成。deallocでスレッド破棄の何がいけないんでしょうか?
2012/05/12(土) 12:47:48.65
>>232,233
なんか話を拡大しているように見えるけど
__unsafe_unretained は今回のあなたのやりたいようにやるのには適しているだろうから、__weak なんて拘らなくていいってだけだよ
他もinitでのスレッド生成がダメなんて言ってないし。もう解決したんならいいんじゃないの
deallocは俺は違う方がいいと思うけど、あなたがあなたのやりたいようにやりたいなら、別にそれはどうでもいいよ。あなたのコードを私が利用するわけでもないし

もう解決したんでしょ?
235220
垢版 |
2012/05/12(土) 16:29:52.19
>>234
最初の疑問は全然解決していません。
結局のところ__block __weak ThreadingServer *weak_self = self;
とやってるにもかかわらず、(おそらく)スレッドのブロックがselfを保持しているせいで、
循環参照によってdeallocが呼ばれていない理由がわからないままです
2012/05/12(土) 17:03:17.47
>>235
だからそういうもんだって。それは循環参照でもなんでもないよ
だってBlockが目的を達成して終われり release すればインスタンスのオーナシップを持っているものが無くなり、dealloc がちゃんと呼ばれるのだもの
巷で問題とされている循環参照は全く別の話だよ。そこがオーナーシップを理解してないってことなんだけどな
あなたのやりたいことはオーナーシップ無しで済ませたいのだから、__unsafe_unretained を使えばいいこと
2012/05/12(土) 17:13:54.71
236
例えば performSelector: とか対象のインスタンスをそのメソッドが実行中はオーナシップを獲得して終わりには解放するでしょ
iOSはそういうベースのもので、ARCもその延長線上のものだと思えなくない?

あなたのやりたいことは、それとは異なることで、そういうようなためにも __unsafe_unretained があると思えなくない?
__weak は __unsafe_unretained と同じ動作でなくてはならないとかあなたがそう思うならそれはもう知らないな
2012/05/12(土) 17:23:21.86
>>237
×iOSは
○CocoaやiOSは
ARC は Objective-C の言語仕様の一部だけど、元々 retain/autorelease/release は Objective-C とは関係無い Framework の仕様でそれを言語仕様に取り込んだようなもんってことね

解らない解決できないだけを強行に言われ、でも自分の考えだけは頑固ってのは正直イラっとしたし、どっかで見たこともあるのでもうおしまいw
239220
垢版 |
2012/05/12(土) 20:46:09.79
時間がかかってしまいましたが、ようやく理解できない原因がわかりました。
__weakならばオーナーシップを獲得しないだろうと、ここを勘違いしていたところが問題でした。
あくまでもブロックはそのコピーを保持し、
そのコピー元が何であろうが関係なかったのですね。
解決です。ありがとうございました。
2012/05/12(土) 21:27:29.11
>>239
ARCなりCocoaやiOSの自動的なオーナーシップの獲得を尊重(それは安全のためなんだもん)して、クラスを使う外部クラスにワーカースレッドの存在を意識させないというのは、俺ならこう書くだろう
http://codepad.org/k57uJw2D
循環参照なんて関係無いよってことで Block 内では self を使う。isRun は寂しいから付けただけで意味は無い
dealloc に入るのは Block が終了した後なんだからということで dispatch_group_wait(group, DISPATCH_TIME_FOREVER); は削除(どうもこいつも怪しい)

外部クラスに提供するメソッドはワーカースレッドとのやり取りが必要で ThreadingServer に実装したいのならばそうすればいいし、
それを呼び出すメソッドを ThreadingServerForOutsideClass に書くのがめんどくさかったらメッセージフォワーディングを使えば @interface にコピるだけで済むでしょ

ということで
241220
垢版 |
2012/05/12(土) 21:38:56.91
>> 240
なるほど、一枚ラップしてるわけですね。
少し手間こそあれ、確かにこっちのほうが正当って感じがします。
forwardInvocation、これは知りませんでした。エレガントですね。
本当に助かりました。ありがとうございました。
242220
垢版 |
2012/05/12(土) 21:43:50.86
追記です。
この方法だと、dispatch_group_waitも書く必要がなく、終了待ち時間もなくなって、
とてもスマートですね。
2012/05/15(火) 20:55:51.97
質問させて下さい。
iPhone向けにUIScrollView を使って横スクロールをさせようとしています。
その際に1pageの横幅サイズが、iPhoneの横幅より小さい領域でスクロールをさせようとしています。
(iPhoneの横幅320 に対して、 1pageは200でスクロール)
で現在はBounds横幅を200に設定してスクロールを実装しているのですが、
そうすると、Boundsの領域外では、スワイプが出来ません。
Boundsの領域外でもスワイプ出来る方法はありませんでしょうか?
ちなみに、ContentInset等も試しては見たのですが、これは、ContentSizeに対する余白の設定の様ですし・・・。
何かヒントでも良いので、教えて頂けたらありがたいです。
よろしくお願いします。
244仕様書無しさん
垢版 |
2012/05/26(土) 15:16:22.32
>>243
UIViewのhitTestで出来るよ
2012/05/26(土) 20:08:41.29
質問なんですが、iOSにてCoreImageの速度についてです。
バンドルから画像リソースを読み込み際に、
NSDataから直接CIImageを作成する場合と、UIImageで読み込んでからCIImageを作成する場合の速度比較をしたところ、
後者の方が早くなりました。
後者のほうが余計な処理をはさんでいるにもかかわらず、後者のほうが早いというのは、
どういう原因が考えられますか?
ttp://codepad.org/d5k9jeGe
2012/05/27(日) 01:08:15.04
>>245
メモリ上に画素展開されているかいないかじゃないの
UIImage -> CGImage -> CIImage -> CGImage
NSData -> CIImage -> CGImage
手順的にUIImageの方が数多くやっているように見えて実はなにもやっていなく、NSDataからCIImage はなんかやらなきゃならないだろう(bmpだとしても)という
と、てきとーにこじつけてみた
247245
垢版 |
2012/05/27(日) 12:55:15.99
>> 246
ありがとうございます。ひとまず実測値を信じることにします。ありがとうございました。
2012/05/27(日) 19:14:21.47
なにげにARCでのワーニングメッセージの中にメソッドの引数で __strong と入っているのを目にして、メソッドの引数もデフォルトでは全て __strong で
- (void)method:(__unsafe_retained id)argument;
とかできるのねと思った

で、>>223 の __weak 時の変な動きが
- (void)method:(id)argument { NSLog... }
id argument = ...;
__weak id weakedArgument = argument;
[self method:weakedArgument];
[self method:weakedArgument];
[self method:weakedArgument];
で簡単に再現できた。__weak は変数として安易に使うのは危険、Zeroingが必要なとこでのみ使うべきということかなあ
2012/05/28(月) 22:20:09.54
cocos2dフレームワークに関してはどこで質問すればいいの?
2012/05/28(月) 23:25:46.09
専門に扱ってるスレッドはどの板にも無い。
251仕様書無しさん
垢版 |
2012/07/12(木) 02:05:44.97
NSHTTPCookieStorageを使ってクッキーの取得とかセットをやってるんですが
端末の時計が2時間以上未来になっていると、クッキーをセットしても空になってしまうという現象が起こっています
どうもクッキーのexpiresdateが端末の時計に対して過去になってることが原因ぽく
expiresdateをnilで上書きするとクッキーにセットできるようになるんですが、こんなことやっちゃっていいんでしょうかね・・・?
もっといい方法があるんでしょうか
2012/07/12(木) 08:41:48.72
いや、それは時計を正常にすればいいだけじゃないの。なんか意味あるの?
2012/07/22(日) 21:05:04.20
NSRunAlertPanelをcppから呼び出すために次のようなラッパーを作ったのですが
wAlertReturn wAlertPanel(const char* panel_title,const char* panel_message,
const char* default_buttom_word,
const char* alternate_buttom_word0,
const char* other_buttom_word0)
{
return (wAlertReturn)NSRunAlertPanel([NSString stringWithCString:panel_title encoding:NSUTF8StringEncoding],
[NSString stringWithCString:panel_message encoding:NSUTF8StringEncoding],
default_buttom_word?[NSString stringWithCString:default_buttom_word encoding:NSUTF8StringEncoding]:nil,
alternate_buttom_word0?[NSString stringWithCString:alternate_buttom_word0 encoding:NSUTF8StringEncoding]:nil,
other_buttom_word0?[NSString stringWithCString:other_buttom_word0 encoding:NSUTF8StringEncoding]:nil
);
}
実際にこれを起動するとプログラムが落ちます・・・
何がいかんのでしょうか?
2012/07/22(日) 21:25:27.76
>>253
NSRunLoop ありの普通の Cocoaアプリ中でcppを呼び出して、そこからここなの?
まさか、cppなアプリでいきなりここってことはないよね?

で、なんでcppなの?純粋なcppもわかるけど、mmからcppをってのが普通でcppからmまたはmmをってなんでかなー?
なんかのアプリの移植かなあ。だとしてもcppをmmにしちゃえばいいのにと
2012/07/22(日) 21:38:13.61
>>254
上のコードがmmで、そのヘッダが.hで、cppがそのヘッダを含んでいて呼び出しています
cppファイル自体はウィンドウズ版との共有でmmにはできないのです
2012/07/22(日) 21:48:36.24
>>255
ふむ、なるほど
正直、1行がすごい(見づらいw)けど、それだけだったら原因はわからないねえ。特に間違っているように見えないので
RunLoop 周りか NSAutoRelease が無いとかかなと思ったけど、それだったらどっかにはすでにあるだろうから

とりあえず、引数使っているところを @リテラル にしてテストしてみては?
2012/07/22(日) 21:55:03.61
>>256
>@リテラル
試しておりました
結果変わらず、ですね
2012/07/22(日) 21:58:19.96
>>257
じゃ、そもそも NSRunAlertPanel を呼べないってことね
ベースはCocoaアプリなんだよね?
2012/07/22(日) 22:01:28.95
Cocoaアプリがベースだとして、cppを介しないでmまたはmmからこれを呼んだらどうなの?
2012/07/22(日) 22:02:24.99
>>258
いえ、違うと思います
.pluginです
2012/07/22(日) 22:16:21.76
>>260
呼べないってのは NSRunAlertPanel を呼んだら問題があってクラッシュするってことね
.pluginかあ。なんなのかわからんけど
環境の問題で、>>253のコードを示されてもわからないと思うんだけど

とりあえず、
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
wAlertReturn result;
result = NSRunAlertPanel([NSString stringWithCString:panel_title encoding:NSUTF8StringEncoding],
[NSString stringWithCString:panel_message encoding:NSUTF8StringEncoding],
default_buttom_word?[NSString stringWithCString:default_buttom_word encoding:NSUTF8StringEncoding]:nil,
alternate_buttom_word0?[NSString stringWithCString:alternate_buttom_word0 encoding:NSUTF8StringEncoding]:nil,
other_buttom_word0?[NSString stringWithCString:other_buttom_word0 encoding:NSUTF8StringEncoding]:nil
);
[pool release];
return result;
}
かな
2012/07/22(日) 22:20:29.69
>>261
ダメっぽいです・・・すいません
2012/07/22(日) 22:28:19.50
>>262
This function not only creates the panel; it also puts the panel onscreen and runs it using the runModalForWindow: method defined in the NSApplication class.

NSApplication 下じゃなきゃダメのように読めるけど?なんのplug-inなんだろなあ...
メインアプリのNSApplications下で動くようなものなの?
2012/07/22(日) 22:49:26.58
CocoaアプリじゃないNSApplicationインスタンスが無いのはNSApplicationLoad を使えば幸せになれるようななれないような、よくわからん
ギブッ
2012/07/22(日) 22:57:10.67
>>264
すいません、でもそれもダメでした

もうちょっと自分で調べてみます、なにかわかったら伝えます
2012/07/22(日) 23:24:22.31
>>265
plug-inなのが難儀だが、本来Cocoa環境に全く関係ないところからというのでは
http://developer.apple.com/library/mac/#samplecode/X11CallCarbonAndCocoa/Introduction/Intro.html
が近いかも。単に一度 [NSApplication sharedApplication] 呼んでおけばいいという、ほんまかいなっというものだけど。まあ、アプリなんだけどねえ
2012/07/22(日) 23:27:47.40
>>265
あ、と、形に拘らないのだったら CFUserNotification は制約は少ないらしい
それもそのサンプルにサンプルが入っている
2012/07/23(月) 07:54:50.43
ありがとうございます、結局sharedApplicationでもダメでしたが
CFUserNotificationが使えたのでそちらを使うことにしました
269仕様書無しさん
垢版 |
2012/08/03(金) 20:54:54.27
某サイトへのログイン認証をiPhoneでしたくてPOST通信で投げてログインできたのはいいんだけど、
返り値というかログイン失敗した時のサーバーからのレスポンスの取得方法がよく分からなかったから、
didReceiveData と DidFinishLoadingでどれだけのデータ量が受信されたかどうかで
ログインの失敗成功を判定しようと思って、実際に出来たんだけど、この方法って邪道だよね?

ログインに成功した時と失敗した時のデータ量には大きな差があるから確実なんだけどスマートじゃないなと思って…
2012/08/03(金) 21:41:11.83
エラーのと何を返すってのはその某サイトのサーバサイドアプリの実装次第だからねえ。公開APIが無いのだったらしょうがないね
データ量で判断って怪しいから、返ってくるだろうエラーテキストででもっても、変えられたらだしねえ
2012/08/03(金) 22:21:41.09
>>270
ですよねー

まぁ趣味で作ってるもんだからいいか
272仕様書無しさん
垢版 |
2012/08/30(木) 22:23:20.19
CentOS 6.3(x86_64)でcocotronのBuildができなくて困っています。
分かるかた、どのようにすればよいか教えてもらえないでしょうか?

参考にしたのは以下のサイトで、この手順通りにビルドしようとしたらアセンブラのところでエラーが出て止まります。
https://github.com/farcaller/cocotron/wiki/Building-Cocotron
https://github.com/farcaller/cocotron/wiki/Building-GCC

  cmake -DCMAKE_C_COMPILER=/opt/objc/bin/gcc -DCMAKE_CXX_COMPILER=/opt/objc/bin/g++ -DCMAKE_INSTALL_PREFIX=/opt/objc ..
  make
   [ 51%] Generating msgSendv-linux.o
   msgSendv-linux.s: Assembler messages:
   msgSendv-linux.s:5: Error: suffix or operands invalid for `push'
   <略>
2012/08/31(金) 04:29:12.29
>>272
なんかスレチっぽいけど
pushl は32bitの命令で64bitではダメやんってことらしいよ
msgSendv-linux.s の中身がそれってことは、64bitに対応してないんじゃないの

https://groups.google.com/forum/#!msg/cocotron-dev/40H5mAUKukY/lF7kVgcUCHwJ
に、
+ A641E1BF1390C66600FE505A /* msgSendv-linux64.s */,
6E8113970A54BBAC000DE3F1 /* msgSendv-linux.s */,
ってあるから、64bit対応しようとして放棄or放置状態なのかなと
2012/08/31(金) 04:38:35.21
>>272
32bitバイナリを作るのは、コンパイラフラグに -m32 らしい
http://stackoverflow.com/questions/1272357/how-to-compile-a-32-bit-binary-on-a-64-bit-linux-machine-with-gcc-cmake

その他、ライブラリに32bitのもをとかあるかもしれないけど、それもこれも全くのスレチなので、他をあたるなりして頑張ってください
275272
垢版 |
2012/08/31(金) 11:24:07.01
>>273
>ってあるから、64bit対応しようとして放棄or放置状態なのかなと
>>274
>32bitバイナリを作るのは、コンパイラフラグに -m32 らしい
ありがとうございます。すみません。

276(・ω・`)
垢版 |
2012/10/19(金) 19:36:36.77
iOSアプリを作りたいと考えているんですがオブジェクトcをいきなり学ぶべきですか?
c言語から入った方が良いんでしょうか?スレ違いなら何処のスレが良いか教えて頂けますか?
個人学習に適した良書が有りましたら教えて頂けますか。
(java&Androidマスター済みデス)
2012/10/19(金) 21:19:25.17
【Xcode】iPhoneアプリ開発初心者の集い【iOS】
http://anago.2ch.net/test/read.cgi/mac/1350384879/

こちらでどうぞ
278仕様書無しさん
垢版 |
2012/10/20(土) 15:18:48.35
HMDTさんのはじめてのブラウザの作り方
 http://hmdt.jp/safari/myfirst/controller.html
のWeb Kitの Cocoa バインディングを使う所で
Bind to:にWebViewが出てこないのってなんで?
279仕様書無しさん
垢版 |
2012/10/22(月) 12:05:13.58
>>278
私も悩んだ

仕様変更だろうから、あきらめた
280仕様書無しさん
垢版 |
2012/10/22(月) 18:26:24.33
>>279
なんか変わったのは間違いないんだろうけどねー
資料漁るのはもう疲れたよ...
281仕様書無しさん
垢版 |
2012/10/28(日) 01:51:18.38
xcodeでogreのサンプルをビルドすると

make -f /root/OgreSDK/CMakeScripts/ReRunCMake.make
make[1]: *** No rule to make target `/Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeCCompiler.cmake.in', needed by `CMakeFiles/cmake.check_cache'. Stop.
make: *** [/root/OgreSDK/CMakeFiles/ZERO_CHECK] Error 2
Command /bin/sh failed with exit code 2

ってなります、どうすればいいですか
282仕様書無しさん
垢版 |
2012/10/29(月) 20:03:24.43
手につかない
283仕様書無しさん
垢版 |
2012/10/30(火) 10:13:26.20
>>278
一番最後のサンプルプロジェクト落として開いてみたけど(プロジェクトはコンバートされた)、バインディング先の表記が
 <WebView:0x115aaxxxx>
みたいに表示されていたけど、普通にコンパイル&ランできた
ので、コンバート後もWebViewのバインディングの仕組み自体は生きているみたいだから
内部的にはバインディング出来るようになっているみたいだけど、
バインド先を選び直したら、選択肢から消え去ってた
まぁ、そういうことなんだろうね
2012/11/17(土) 09:45:12.05
Xcode4.2で、ダウンロードしたソースコードをビルドしたところ、
以下の★で、

Unexpected '@' in programと

エラーが出てしまいます。新しい文法だと思うのですが、
もうしわけございません、識者の方、解消法がわかりませんか?

======
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSArray *sortDescriptors = @[sortDescriptor]; //★
======
2012/11/17(土) 11:20:00.39
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; //★
2012/11/17(土) 11:44:36.39
GCC でコンパイルしようとしてる?
2012/11/17(土) 17:42:33.40
>>285

ありがとうございます、ビルドできました。
2012/11/17(土) 17:45:46.09
287です、追記です。
285さんのヒントで、以下のサイトにたどり着きました。Xcode4.4からなんですね。

http://www47.atwiki.jp/socup/m/pages/216.html

ありがとうございます。
2012/12/15(土) 13:35:02.71
[self performSelector:@selector(foo)];
(respondsToSelector:は呼んでいない)
というコードがあったのですが、
[self foo];
としない理由は何が考えられますか?
2012/12/15(土) 13:44:48.48
@interface NSObect(Hoge)
- foo;
@end
とかが無いと警告がでるから
2012/12/16(日) 00:59:41.87
>>290
なるほどー。
ただ自クラスにメソッドが定義されてるのにperformSelectorで呼んでたので何か意図があるのではと思った次第です。
2012/12/22(土) 12:53:17.28
http://love-motif.com/article/art_13.shtml
Objective-Cの見た目がどうしても好きになれなかったけど、
このページを好きになったw
2012/12/23(日) 23:11:52.86
褒めてるのか貶してるのか判断が難しいなw
2013/01/30(水) 19:58:29.02
ヘッダファイルについて調べているのですが
file:///System/Library/Frameworks/Foundation.framework/Headers/NSObject.h において
@protocol や @interface で宣言されたメソッドが実装(定義)されているファイルというのは
どこにありますか?
2013/01/30(水) 20:33:20.70
@protocol は、ふつーはヘッダにそれがあるだけで実装はてめーでしろやっていう目的のものだと思うけど
「実装(定義)されているファイル」って意味わからんけど、@interfaceの場合のクラスの実態は、
file:///System/Library/Frameworks/Foundation.framework/Foundation
が指す先にまとめられているであろう
自分で Framework 作ってみればわかるよ
2013/01/30(水) 20:49:09.08
>>295
お返事ありがとうございます。

例えば、今私が書いているコードから抜粋すると
@interface ClassYear : NSObject
- (BOOL) is2013;
@end
の様な @interface コンパイラディレクティブをつくったとき、
@implementation ClassYear
- (BOOL) is2013 {
BOOL check = NO;
if (iv == 2013) check = YES;
return check;
}
@end
みたいな @implementation コンパイラディレクティブを書くとおもうのですが
NSObject.h の @protocol や @interface に対応する @implementation が見たいのです。
2013/01/30(水) 22:08:22.52
なんで見たいの?ライブラリって知っている?
だから、@protocol の実態は無いよw

そんな気にする理由がわからないところは気にしてないで、もっと気にして勉強しなければならないことがあるよ
2013/01/30(水) 22:11:54.91
>>296
http://news.mynavi.jp/column/objc/
を最初から全部読んで、それでもわからないならまたおいで
299294
垢版 |
2013/01/31(木) 17:25:12.75
ヘッダファイルが読み込んでいるファイルがライブラリ ... なのですが
昨日までいまひとつ理解できていませんでした。
>>295 で教えて頂いた
  > file:///System/Library/Frameworks/Foundation.framework/Foundation
  > が指す先にまとめられているであろう
の意味がやっと理解できました。

/System/Library/Frameworks/Foundation.framework/Foundation
はエイリアス、オリジナルのファイルは
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
拡張子のない UNIX 実行ファイルと表示されるこのファイルこそがライブラリファイルなのですね。
C というフォルダに入ってるこのファイルはおそらくバイナリファイルなのだとおもいます。
(日本語4種 + UTF-8 の文字コードで読めなかったため)
時間があれば内容を読み取ることができるのか確認してみたいとおもいます。
>>297 さんのレスがものすごくヒントになりました。ありがとうございました。
300294
垢版 |
2013/01/31(木) 17:26:05.89
@protocol についてですが、例えば NSObject.h において
@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end
とあり、NSArray.h において
@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
- (NSUInteger)count;
- (id)objectAtIndex:(NSUInteger)index;
@end
とあります。この記述があるからこそ NSArray.h を読み込む Foundation.h を読み込んだ時に
copyWithZone: メソッドがつかえるのだとおもいます。
そういうところを追いたかったのです。

・C を学んでいた頃からヘッダファイルが読み込んでいるライブラリファイルがどれなのか理解できていなかった。
・使用しているテキストに間違いがあるとおもい、それの確認に。
・super と self がなんであるか?(PDF にあるキーワードという言葉ではなしに)が
よく分からなかったので、super と self を定義している部分があればそれを見てみたかったのです。
Objective-C には仕様書がないので、あとは実装されている部分(@implementation)を見るしかないかなぁ、とおもいました。

今日ようやくカテゴリやテキスト出力まで学びましたが
使用しているテキストがあまりに分かりづらいので今は
http://libro.tuyano.com/index2?id=524006
の記事で学習しています。
>>298 さんに教えて頂いたページも参考にさせて頂きます。
大変実のある一日になりました。ありがとうございました。
2013/01/31(木) 17:43:21.73
>>299,300
>ヘッダファイルが読み込んでいるファイルがライブラリ
>C を学んでいた頃からヘッダファイルが読み込んでいるライブラリファイルがどれなのか理解できていなかった

今も理解できていないようだけど、コンパイラが使うのがヘッダファイル、リンカが使うのがライブラリファイル
ヘッダファイルが読み込んでいるライブラリファイルという概念は存在しない。コンパイラは単に目印を付けるだけ、リンカは目印に該当するのをライブラリ中から拾い出すというのは、Objective-Cでも同じで何も変わらない
302294
垢版 |
2013/01/31(木) 18:05:09.29
ああ、ありがとうございます。確かに
プリプロセス・コンパイル・リンクの部分はまだほとんど理解していません。
出直してきます。
2013/02/02(土) 11:37:17.56
 当然だけど、アップル自体はフレームワークのソース、とりわけアプリに近い部分は
原則非公開で、GNUSTEPやCocotronのような互換環境の見て推測するしかない。

 ただ、アップルのドキュメントは正確だし、情報は比較的多いしのでソースを調べる
必要性って無いと思うが。でなければあんだけ多くのIOSアプリなんて出回らない。

 294はなにからなにまで知らないと気が済まない典型的な組み込み系の人っぽいが、
いろんなクラスの役割を早く理解して組み合わせる、オブジェクト指向プログラミングの
勉強をしっかりしたやった方がいいと思う。
2013/02/03(日) 15:24:27.59
294 は実の所まともに Obj-C のプログラム組んだことがない人物に見えるが。
2013/02/03(日) 17:40:18.74
なんか資格試験だけには強そうだけどなw
2013/02/17(日) 15:38:45.83
素朴な疑問ですが、+initializeはどういう場面で使うものなのでしょう?
定石みたいなものはありますか
2013/02/17(日) 18:07:37.92
Singletonはここで作った方がいいというのを見たことはある。マルチスレッドを考えるととか
定石は+share...とか+default...のメソッド内で無かったら作るの方なんだろうけど
2013/02/24(日) 22:28:24.42
文字列定数の@"〜"って、retainつきのNSString*プロパティーに代入しても問題なさそうだけど、
リファレンスカウンタの動きとかどうなってるんでしょうか?
2013/02/25(月) 13:36:04.52
>>308
retainCountは最大値で固定
特別な領域に確保される
生存期間は起動時から終了まで
310308
垢版 |
2013/02/26(火) 15:14:20.82
>>309
なるほどありがとうございます
2013/03/04(月) 14:19:53.46
引数のないメソッドは、下記2通りの方法で呼べますが、
どんな時にどちらの表記を使うべきかの規約はありますか?
慣例的なものでも構いません

[クラス名 メソッド名]
クラス名.メソッド名
2013/03/04(月) 16:41:16.74
>>311
プロパティ以外はドット構文禁止!

だそうです
2013/03/05(火) 01:32:07.23
>>311
すべてメッセージ式(上の方)に統一した方がいいよ。
プロパティはドット記法、それ以外はメッセージ式と完全に分けられるならいいんだけど、プロパティの操作でも引数が増えた途端メッセージ式にしないといけないことがあって、統一性が取れない。
例えばUITableViewCellのselectedとか。animatedを指定してセットするときはドット記法使えない。
314311
垢版 |
2013/03/05(火) 09:20:06.30
>>312-313
ありがとうございます
プロパティって引数取れるんですね、知りませんでした
今後は全てメッセージ式に統一しようと思います
2013/03/05(火) 20:07:35.24
>>314
プロパティに引数とかないよ
>>313は -setSelected:animated:を使わないとアニメーションしないといってるだけだよ
2013/03/14(木) 18:23:21.25
[質問]
カテゴリ化されたメソッドの明示的な呼び出し方
iOSの起動時にapplication: didFinishLaunchingWithOptionsが呼び出されますが、
このときに application: didReceiveRemoteNotification を明示的に呼び出したいのですが

NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

[self didReceiveRemoteNotification: remoteNotif];
[application didReceiveRemoteNotification: remoteNotif];

のいずれも@interface AppDelegate/UIApplication にselectorが定義されていないというエラーになります。
どのように呼び出せばいいのでしょうか。
2013/03/14(木) 19:12:21.01
>>316
[self application:[UIApplication sharedApplication] didReceiveRemoteNotification:remoteNotif];

じゃなくてえ、
- (void)didReceiveRemoteNotification: didReceiveRemoteNotification:(NSDictionary *)userInfo;
ちゅうメソッド作って、そこで実作業して、
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
からも、それを呼び出すとか

まあ好みだけど
2013/03/14(木) 19:13:38.68
>>317
>- (void)didReceiveRemoteNotification: didReceiveRemoteNotification:(NSDictionary *)userInfo;
間違えた
- (void)didReceiveRemoteNotification:(NSDictionary *)userInfo;
2013/03/14(木) 21:18:24.46
>>317
どうもありがとうございます。

>- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
は定義済みです。

ところでこのメソッド定義って「application」が2回出てくるけどこの2つのapplicationはどう違うんでしょう?
2013/03/14(木) 21:44:57.44
>>319
うん。それを呼び出したいってのだから、そうだろけど

[self application:[UIApplication sharedApplication] didReceiveRemoteNotification:remoteNotif];

[self application:application didReceiveRemoteNotification:remoteNotif];
でよかったなあ。そういえば application:didFinishLaunchingWithOptions: 内でという話しだったなと

メソッド名(セレクタ名)の一部と単なる引数名って...
2013/03/17(日) 19:46:27.41
>>319
> 2つのapplication

セレクタの一部と仮引数のこと言ってんの? いやまさかね
2013/03/17(日) 20:40:54.03
>>321
後日教本で把握した元の質問者だけど、
識別子が複数の単語から形成されるのはプログラミング言語として結構珍しいんじゃないかと思う。

この場合はapplication:didReceiveRemoteNotification という名称のセレクタ(メソッド)になるわけで。
ところで、objective-cのセレクタの第1引数にキーワード名が付けられない理由はなぜだろう?
2013/03/18(月) 01:16:08.07
別に無くてもいいんじゃねってのはCocoa/IOSの命名からわかるだろう
2013/03/18(月) 01:21:03.16
あと、セレクタ名が
引数無し
method
引数付き
method argument:
method argument1:argument2:
ってなるんじゃね
だったら
methodArgument:
methodArgument1:methodArgument2:
と変わらんだろう。

んなこまけーとこ気にすんなっ。俺やお前より賢い人が考えたものだと受け入れろw
2013/03/18(月) 01:49:04.47
再び考えてみたら
[instance method argument1:hoge argument2:hogehoge];
って気持ち悪いじゃんっ。現在のに見慣れているからだけでなく絶対的にw

>>324
>methodArgument1:methodArgument2:
書きたかったのは
methodArgument1:argument2:
でした
326仕様書無しさん
垢版 |
2013/03/24(日) 10:29:56.43
※本投稿の拡散歓迎です。
派遣労働者のパワハラ・セクハラ対応策について

下請け労働者、業務委託、派遣労働者は契約期間が短期という制約があり、契約更新拒否をちらつかせた不当な労働強要の実態があります。
雇用形態における壁・差別は法律に直接的規程はなくとも認められているわけではありません。
「正社員の有期雇用労働者に対する優先的地位乱用」による「侮辱罪」、「脅迫罪」、「強要罪」、「傷害罪」、条例違反で刑事告訴できるが、
本稿では刑法ではなく労基法関連の対策に焦点をあてます。

労働基準法第5条(強制労働の禁止)(1年以上10年以下の懲役又は20万円以上300万円以下の罰金)
■精神の自由を不当に拘束する手段によつて、労働者の意思に反して労働を強制してはならない。
例:正規労働者(同僚)による残業の強制。仕事の期限が遅滞した際に「繰り返し」残業を示唆する。
例:派遣の仕事の回し方の裁量を正社員が決めるなどと示唆する。
例:飲み会、昼食、たばこの同伴を強要する。

労働基準法3条 (六箇月以下の懲役又は三十万円以下の罰金)
■社会的身分を理由として労働条件について差別的取扱をしてはならない。
例:社内制度に明示されていない指揮命令系統が正社員と派遣社員に存在する。
派遣社員も正社員と同様に社内制度に準じるという契約上、業務で平等に取り扱う必要がある。
例:社内制度上の上司でもない正社員が命令をしたり、仕事上の指導権・裁量・許可権限をもつこと
派遣契約の内容にそうした区別を制度化するような客観的な証拠がなければ派遣社員側に有利といえる。
例:派遣社員に業務上における裁量を一切与えず、非管理職の正社員が許可を与える

労基法3、5条については、経営責任も問えますので、刑事告訴できる相手は以下のとおり。

派遣先 当該正社員
派遣先 指揮命令者
派遣元・派遣先 代表取締役

刑事告訴(告発)の行い方ですが、内容証明郵便で告訴状(告発状)を地方検察の直告班に郵送してください。
2013/03/29(金) 04:19:37.78
昔、17年くらいまえかなー。
appleのdeve用CDに音楽トラックが入ってる月があってさ、女性ボーカルの曲。
誰かタイトルしらない?
328仕様書無しさん
垢版 |
2013/04/24(水) 10:41:58.24
ttp://www1.axfc.net/uploader/so/2879450.pqf

職業プログラマーが3時間でiPhoneアプリを作成出来るようにするための
ドキュメントを公開しました

もし良かったら利用してください
2013/04/24(水) 12:10:49.81
>プロトコルを採用しているクラスは、そのプロトコルで宣言 されているメソッドを必ず実装しなければなりません
それは以前の話し
今は、@required と @optional が指定でき、実際に @optional なのも多い。もちろん、@optional なプロトコルメソッドは任意

プロトコルなんだから「採用」よりも「準拠」じゃねと思うけど、それはまあいいや
330仕様書無しさん
垢版 |
2013/05/07(火) 17:08:51.52
http://serif.hatelabo.jp/3644295abb7450da9151ba9f25008d2f64156f73/dbfe0b17c7f48159c46dda86c7f46f5ee90b8b47

ワロタw
2013/05/21(火) 00:57:56.62
>>329
adoptの日本語訳だしな
2013/05/21(火) 01:01:16.92
>>311
これしばらく調子乗ってノリノリでつかってみたけど、あとでクソ面倒なことに気付いたから[[Hoge alloc] init]の形で古典的に書いてるよ。
最初に定義された記法だから破綻がない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況