【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/
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]の形で古典的に書いてるよ。
最初に定義された記法だから破綻がない。
333仕様書無しさん
垢版 |
2013/05/24(金) 10:37:49.48
流行はalloc initなんて書かないで
newするらしいじゃん
2013/05/24(金) 10:56:40.15
>>333
ARCでretain書かなくなったからnewでもいい、ってことだが
googleのobjCガイドラインも、Apple Cocoaガイドラインもalloc initを推奨してる

それに稀にinitを別のシグネチャに変えたりするときに、newだとめんどくさい
2013/05/28(火) 12:30:45.22
ARCについて質問です。
ARCで、イニシャライザでFlyweightパターンなどの都合でレシーバ以外のオブジェクトを返した場合、
センダ側ではalloc→initとやっている訳ですから、releaseすることなくそのオブジェクトへのポインタがセンダ側で失われメモリリークしますよね
かといってイニシャライザ側の実装ファイルをARC解除して、レシーバ以外のオブジェクトを返すときにイニシャライザでreleaseしようとすると、
センダがもしalloc→initとやらずに、alloc→autorelease→initとかやっていたら、二重にreleaseされてしまう恐れがありますよね…
Flyweightパターンを適用する場合にはinitを封印して常にクラスメソッドを使うようにさせなければならないのでしょうか。
2013/05/28(火) 13:23:39.55
>>335
@implementation FactoryClass
- (id)init
{
NSObject *object = [[NSObject alloc] init];

return object;
}

- (void)dealloc
{
NSLog( @"dealloc %@", self );
}
@end


_object = [[FactoryClass alloc] init];
NSLog( @"%@", _object );

って、ちょっとナンだかのでも、
_object = [[FactoryClass alloc] init];
直後(?)に、FactoryClass のインスタンスは解放される
思っているよりもかなり賢いぜよ
2013/05/28(火) 16:06:31.52
ARC切ってstatic analyser使ったら賢すぎだわ
一度好きに書いてみてアナライザ通したら指摘してくるよ
2013/06/02(日) 21:47:42.90
Analyser賢いよな。結構ビックリするような瑕疵を見つけてくる。
2013/06/10(月) 03:12:19.77
.
2013/06/11(火) 11:46:51.94
Cocoa自体は10.9でも激変なしかな。
iOSはGUI激変でデザイナー涙目だけど
2013/06/14(金) 00:30:51.41
10.10でiOSと統合っぽいな。区切りもいいしw。
2013/06/14(金) 01:12:53.75
Sprite Kitは使いやすそうだね
2013/06/14(金) 03:56:48.87
>>341
iOS 7で反応見てからMacをiOSに寄せるアプローチとみた
344仕様書無しさん
垢版 |
2013/06/15(土) 09:12:11.65
おまえら、はやくこれ完成させてください
https://github.com/ashie/gtkimcocoa
2013/06/19(水) 16:13:20.34
適当なスレが見つからなくてスレ違いだったらごめんなさい。
山ライオンぐらいから厳しくなってきたのでappファイルの署名をしたいとDev契約結んで
キーチューンアクセスとDevセンターからcerを生成してターミナルからコマンドで署名しても
CSSMERR_TP_TRUSTEDというエラーで署名できなくて困っています。
キーチューンアクセスを調べたらDevセンターからDLしたAppleの署名付きcerにも
関わらず、「この証明書は不明な機関によって署名されています」となっていました...orz

Appleからもらったのに不明な機関とはどういうことでしょう。。?これはどうしたらよいのでしょうか。
ちなみに他の署名書に 「Apple Worldwide Developer Relations ~」はあります。
2013/06/19(水) 17:57:08.47
ここもいいけど、Mac板のほうが人多いかも

俺はよくわかんない、ごめんね
2013/06/20(木) 23:59:49.39
NSDictionaryからクラスに、
キーと名前が一致するプロパティに値を移してくれるようなメソッドってあります?

まぁセレクタとforで数行じゃんって話ではありますが…
2013/06/21(金) 00:30:38.80
ない。
うん、セレクタてかKVCで数行で、これもわかっていると思うがカテゴリで追加すればいいことだからな
2013/06/22(土) 10:58:05.14
KVC下手に使うとあっという間に訳わからんことになるけどね
2013/06/22(土) 13:38:42.25
>>347の目的ならどっちも変わらない
2013/06/22(土) 13:55:36.87
forは使わないけどforeachは使うとかだったら腹痛
2013/06/22(土) 13:59:49.38
俺の使っているのにはforeachなんて語は無いな。さすがそんなので腹痛になるだけある
2013/06/22(土) 14:05:45.77
foreachとdowhileは害
2013/06/22(土) 14:14:39.20
コードも張らない奴に用は無い
forで回して突っ込んで置けば良いと俺は思うよ
2013/06/22(土) 14:15:38.02
こういうヤツが権力を持つとアホなコーディング規約作りそうというの伺える
2013/06/22(土) 14:16:08.79
>>355 >>353
2013/06/22(土) 18:16:56.35
>>355
デメリットを理解せず失敗ばかりするアホ
2013/06/22(土) 18:19:41.08
01しかない職業病なのか元々馬鹿なのかわからんヤツだな
まあ元々賢くないから職業病wになるのだろうから同じか
2013/06/22(土) 19:06:27.56
>>354って言うから書いてみた

@implementation NSDictionary (AddOn)
- (void)expandToPropertyForObject:(NSObject *)object
{
for(NSString *key in self.allKeys){
if([key isKindOfClass:[NSString class]])
continue;
@try{
[object setValue:[self objectForKey:key] forKey:key];
}
@catch(NSException *e){
if([e.name isEqualToString:@"NSUnknownKeyException"])
continuel;
@throw e;
}
}
}
@end

セレクタ使う場合うはset大文字なんだろうけど、NSStringの便利メソッドってあったけ?
2013/06/22(土) 19:08:13.41
ああ、
if(![key isKindOfClass:[NSString class]])

continue;
だな。まあいいや
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。