1 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:00:33.77 ID:oYmLZZ1y.net] Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。 (Wikipedia:ja.wikipedia.org/wiki/Objective-C より) 前スレ Objective-C [ObjC part:8.1]; mevius.2ch.net/test/read.cgi/tech/1414816517/ Objective-C [ObjC part:8]; peace.2ch.net/test/read.cgi/tech/1356341803/ Objective-C [ObjC part:7]; toro.2ch.net/test/read.cgi/tech/1330330906/ Objective-C [ObjC part:6]; toro.2ch.net/test/read.cgi/tech/1313891268/ Objective-C [ObjC part:5]; hibari.2ch.net/test/read.cgi/tech/1279730299/ Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/ 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
2 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:03:20.46 ID:oYmLZZ1y.net] *** プログラム技術板 *** 【マック】Macintoshプログラミング質問箱 peace.2ch.net/test/read.cgi/tech/1113058054/ *** プログラマ板 *** 【Cocoa】Macプログラマのスレ【Objective-C】 kanae.2ch.net/test/read.cgi/prog/1214208397/ *** 新・mac板 *** Macでプログラミング{11} anago.2ch.net/test/read.cgi/mac/1414566499/ Xcode part14 egg.2ch.net/test/read.cgi/mac/1476190499/ プログラミング言語Swift Part4 egg.2ch.net/test/read.cgi/mac/1484763495/
3 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:09:55.63 ID:oYmLZZ1y.net] *** 本家 *** Objective-C プログラミング言語 https://developer.apple.com/jp/documentation/ProgrammingWithObjectiveC.pdf Objective-C 2.0 プログラミング言語 ttp://read.pudn.com/downloads152/ebook/665246/ObjC.pdf Blocksプログラミングトピックス https://developer.apple.com/jp/documentation/Blocks.pdf 並列プログラミングガイド - GCDとか https://developer.apple.com/jp/devcenter/ios/library/documentation/ConcurrencyProgrammingGuide.pdf Objective-C Feature Availability Index https://developer.apple.com/Library/mac/releasenotes/ObjectiveC/ObjCAvailabilityIndex/index.html Objective-C Runtime Programming Guide https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html そのほか英語 https://developer.apple.com/library/mac/navigation/ *** 書籍 *** 荻原本 第3版/Kindle 版も有り amazon.jp/dp/4797368276 HMDTダイナミック本 amazon.jp/dp/4861006414
4 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:14:12.48 ID:oYmLZZ1y.net] Objective-C Literals ― Clang 3.6 documentation clang.llvm.org/docs/ObjectiveCLiterals.html Apple のランタイムのソースコード www.opensource.apple.com/source/objc4/ ダイナミック Objective-C サイト news.mynavi.jp/column/objc/ 英語のサイト Objective-C 入門 cocoadevcentral.com/d/learn_objectivec/ Objective-C Style 1, 2 (変数名のつけかた等) cocoadevcentral.com/articles/000082.php cocoadevcentral.com/articles/000083.php Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る mikeash.com/?page=pyblog/ C++ と Objective-C の文法の比較 static.stevereads.com/papers_to_read/from_c_to_objective-c.pdf
5 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:15:12.40 ID:oYmLZZ1y.net] Swift と関連する Obj-C ドキュメント *** 本家 *** Using Swift with Cocoa and Objective-C https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216 Swift and Objective-C in the Same Project https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html Adopting Modern Objective-C https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html Embedding Content with Swift in Objective-C https://developer.apple.com/library/ios/qa/qa1881/_index.html
6 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 21:30:22.97 ID:0jV1JJrR.net] >>1 とりあえずw、さんきゅーっ
7 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 22:13:33.72 ID:00kx/Fcv.net] 前スレ最後の方は 「ぼく電気工事士ですけど、ブレーカーとスイッチの違いってなんですかね? いつも電気ケトルでお湯沸かすのにブレーカーオンオフしてますけど?」 みたいでトリップ感あった。
8 名前:デフォルトの名無しさん [2017/11/17(金) 22:14:19.37 ID:Tpi/0V/R.net] メソッドに渡されるselfがclassのポインタかインスタンスのポインタかの違い って言ってもわからんだろうな
9 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 22:18:26.81 ID:Q8rdVBz+.net] >>7 上手い例えだと思う。
10 名前:デフォルトの名無しさん [2017/11/17(金) 22:45:46.26 ID:KuiGlQ+X.net] わかりました! クラスメソッドはプロジェクトで1つしかインスタンスが持てない インスタンスメソッドは複数持てる ですね! つまりメソッドのロジックは同じで内部変数が違うものをいくつも同時に保持したいかどうかですね!
11 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 22:51:49.08 ID:EkFnC7lu.net] 一周回って合ってるおめでとう
12 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 22:57:51.02 ID:Tpi/0V/R.net] ちょっと違う
13 名前:デフォルトの名無しさん [2017/11/17(金) 22:58:24.49 ID:KuiGlQ+X.net] ありがとうございます!
14 名前:デフォルトの名無しさん [2017/11/17(金) 22:59:02.57 ID:KuiGlQ+X.net] あれ?(汗)
15 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 23:04:16.69 ID:oYmLZZ1y.net] 逆に面白い解釈で初心者に解説する時の勉強になる可能性? は無いか。 ここでNSObjctのインスタンスを見てみると objc_object という構造体であり 中には Class ってのがいるだけだ struct objc_object { Class isa OBJC_ISA_AVAILABILITY; }; Classってのはobjc_classと定義されているこんな感じの構造体だ struct objc_class { Class isa OBJC_ISA_AVAILABILITY; Class super_class OBJC2_UNAVAILABLE; const char *name OBJC2_UNAVAILABLE; long version OBJC2_UNAVAILABLE; long info OBJC2_UNAVAILABLE; long instance_size OBJC2_UNAVAILABLE; struct objc_ivar_list *ivars OBJC2_UNAVAILABLE; struct objc_method_list **methodLists OBJC2_UNAVAILABLE; struct objc_cache *cache OBJC2_UNAVAILABLE; struct objc_protocol_list *protocols OBJC2_UNAVAILABLE; }; そうインスタンスとはクラスを持っていてクラスはインスタンスを持っていないのだ クラスメソッドもインスタンスメソッドもクラス構造体の中で定義されていて呼び出せる範囲が違うだけなのだ そしてメソッドがインスタンスを持っているわけではなく インスタンスの中のクラスの中にある物を呼び出しているのだ これは構造はなくルールに近い話になる
16 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 23:09:06.54 ID:Tpi/0V/R.net] >>14 インスタンスメソッドも、メモリに確保される実体は一つだけ インスタンスをいくら作ろうがメソッドの実体は一つ selfが違うからインスタンスごとに確保されたように見えるんだろ? インスタンスを生成するごとに新たにメモリに確保されてるのはインスタンス変数
17 名前:デフォルトの名無しさん [2017/11/17(金) 23:21:41.87 ID:KuiGlQ+X.net] ロジックは1つで変数が複数ですね。 確かに無駄がないですね! ここは超人レベルの方ばかりで難しいんですが、親切なので助かりました!
18 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 23:25:13.48 ID:wg33BRe2.net] そうです
19 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 23:59:36.79 ID:yjTQ4fwn.net] なぜ多くの開発者が今なお Swift よりも Objective-C を好むのか https://frasco.io/why-many-developers-still-prefer-objective-c-to-swift-2c624232cdd2
20 名前:デフォルトの名無しさん [2017/11/18(土) 00:00:27.78 ID:jHta9B9D.net] もう一つ聞いていいですか。 Self.hensuと_hensuって同じものですか? とりあえず全部_hensuで書いてます。
21 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 00:11:21.74 ID:GufJ21C4.net] >>20 Self.hensuはゲッターが呼び出される 例えばこんな感じ -(id)hensu{ return _hensu; } これは @synthesize hensu = _hensu; としてインスタンス変数の_hensuを紐づけてると言う事 _hensuは直接_hensuを取る 取る時はそこまで問題にならないけど セットする時は@propertyでretainを指定してる時は @property (retain)id hensu; Self.hensu = obj; とするだけでセッターの中でretainしてくれるので _hensu = obj; とするより安全 色々自動で処理されて記述量が減った分、省略され過ぎて逆に分け分からなくなってる所は多い
22 名前:デフォルトの名無しさん [2017/11/18(土) 00:24:14.19 ID:jHta9B9D.net] せっかく値保持したくてretainにしていても_hensuにセットしてたら効果なくて、アプリが落ちるかもってことですね! うわー、今までたくさん書いてきちゃった
23 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 00:41:51.30 ID:GufJ21C4.net] 例えばこうしたら @interface test(){ int _iHensu, _hensu; } @property (assign)int hensu; @end @implementation test @synthesize hensu = _iHensu; - (void)test{ _hensu = 10; _iHensu = 90; NSLog(@"h1 %d", _hensu); //10 NSLog(@"h2 %d", self.hensu);//90 } @synthesize で hensuに_iHensuを登録すれば self.hensuで呼び出されるのは_iHensuになる感じ これはプリミティブ型のintだからassignだけど オブジェクト型のインスタンスを MRRチックに自分でretainするならセッター使わなくても問題ないよ もちろんreleaseも必要 セッターゲッター使うとそれを省略出来るってこと retainもセッターの中で こんな感じの関数が呼ばれるだけだから - (void)setHensu:(id)value{ if(_iHensu != value){ id oldValue = _iHensu; _iHensu = (value != nil ? [value retain] : nil); if(oldValue != nil) [oldValue release]; } }
24 名前:デフォルトの名無しさん [2017/11/18(土) 00:50:08.22 ID:jHta9B9D.net] 知り尽くしてますね! コツコツ_をselfに置換する方向でいこうかと思います(泣)
25 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 01:15:54.95 ID:GufJ21C4.net] ただ処理速度の観点からいくとクリティカルな部分ではゲッターの関数呼び出しより 直接インスタンス変数を呼んだ方が良い場合もあるセッターもしかり 自分でコントロール出来るなら出来合いの関数を使わない方がスマートだったりする あと @property (assign)int hensu; と登録してる場合は自動でソースにセッターも追加されてるから 関数を書かなくても [self setHensu:10]; と self.hensu = 10; は同じなんだけど前者の書き方の方が都合がいい場合もあるから覚えとくと良い 自動入力での候補から入力した場合も数値まで行くから多少速い気もするし (これは慣れかもしれないけど ちなみに@property setter =やgetter = で呼び出しの関数を変える事も出来るよ こういうのを覚えておくとセッター関数をオーバーライドして同期処理を追加したりして KVOを登録しないでKVOチックな事が出来たりする
26 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 01:58:32.81 ID:GufJ21C4.net] あ、ちなみにオブジェクト型の個別のretain とか release はMRCでの話で ARCだとまた少し話が変わってくるわけだけどもね そんなに気にしなくても美味い事やってくれますよ彼女なら
27 名前:デフォルトの名無しさん [2017/11/18(土) 03:58:01.57 ID:jHta9B9D.net] objective-cってなんかすごく深いですね
28 名前:ビル・ジョブス [2017/11/18(土) 08:36:45.51 ID:22t4JudU.net] X MRC O MRR - Manual Retain Release
29 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 09:39:22.21 ID:GufJ21C4.net] >>28 >>23
30 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 09:52:05.60 ID:y+yjhIU6.net] こんな感じに理解してたんですけど合ってます? -initWithString インスタンスメソッド。allocしないと使えない。あとでreleaseが必要。 +stringWithString クラスメソッド。allocしなくていい。 autoreleasepoolに登録された状態のインスタンスが返るので、 releaseしなくていい。 ARCだと、「releaseしなくていい」という コンビニエンス・コンストラクタのメリットが薄れた。 (気軽にallocしちゃってもメモリリークしない)
31 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 10:19:53.99 ID:QpBxoTJw.net] >>30 今時Obj-CでMRRを使う場面は無いと思うが、参照カウント方式は基本なので教えると Obj *obj = [[Obj alloc] init]; “init”から始まる、名前がlower camel caseのインスタンスメソッドは、retain済みのオブジェクトのポインタを返す これを「initファミリー」と言い、この命名規則を守れば自作メソッドでも自動的にretain済みを返す 変数objはただのポインタで、-initから返る上記のポインタ値を代入してるだけ retain済みなので使いおわったら-releaseを呼んで解放する AppleのAPIの、いわゆるコンビニエンスコンストラクタはautorelease済みのオブジェクトを返すので、releaseしてはならない その場合main()のautoreleasepoolに登録されるので解放されるのはアプリ終了時になる 解放のタイミングを自分で制御したい場合はinitファミリーを使うかautoreleasepoolで囲うかする必要がある
32 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 10:34:38.89 ID:QpBxoTJw.net] { initファミリー/retain } と { release } は対で使うこと View *view_ = [[View alloc] initWithFrame:CGRectMake(0,0,100,100)]; [self.view addSubview:view_]; [view_ release]; //上記initWithFrameと対 これはself.viewがview_をretainして保持するので、以降直接参照しないのならここでreleaseしても良い self.viewはselfが解放されるときに解放され、その時にview_にもreleaseが呼ばれる //self.view側で呼んだretainと対
33 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 10:38:27.21 ID:QpBxoTJw.net] 対で使うのが大原則なので、例えば @property (retain) id obj; というプロパティを持ったクラスなら必ずそれをdeallocでreleaseすること - (void)dealloc { [_obj release]; [super dealloc]; }
34 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 10:41:50.62 ID:QpBxoTJw.net] こんなことを全自動でやるのがARCなので、普通はARC使うけどね でARCとは、ビルド時にretain/releaseの行を、strong/weakに応じて挿入するだけで実現できているのだ シンプルだね
35 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 11:34:23.42 ID:y+yjhIU6.net] >>31-34 詳しい説明ありがとうございます! 自作メソッドでも、initから始めると自動的にretainされるのは 知らなかったです。 あと、main()のautoreleasepoolが解放されるのは アプリ終了時、というのも分かってなかった…。 ARCがない時は、メモリリークが怖くて、 コンビニエンス・コンストラクタばっかり使ってましたけど、 あんまり意味がなかったのかも…。 今はARCのおかげで、何も考えずにallocとかnewできて 楽になりました。
36 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 11:30:09.61 ID:RC6H/PLj.net] >>1 遅くなったけどスレ立てありがと
37 名前:デフォルトの名無しさん [2017/11/22(水) 03:50:42.17 ID:xPTGudok.net] 複数のhファイルで同じ#import~をたくさんかくと何かデメリットがあるのでしょうか? わかりやすくmで使っているものをそれぞれ全部書くべきか、書かなくてもビルドが通るなら書かない方がいいのかベストは何でしょうか。
38 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 10:19:35.09 ID:r2ZqOIfG.net] >>37 #include 使ってた人は 重複定義とか循環参照とかでビルドエラーになった経験があるからね #import でも#include時と同じように気を付けるってだけ 実際#importは多重インクルードしない機能があるから問題ないけど ソースが汚れるし参照でエラーが出る事あるしで無闇にimportしない 必要な物だけimportして 親子関係をしっかり考えたコーディングを心がけましょうってこと
39 名前:デフォルトの名無しさん [2017/11/22(水) 15:51:24.96 ID:xPTGudok.net] なるべく必要最小限にということですね。
40 名前:デフォルトの名無しさん [2017/11/22(水) 15:55:29.92 ID:xPTGudok.net] AViewcontrollerを開いたあとに、BViewcontrollerを開くと、Aでimport たファイルはBでしなくてもビルドが通るので書かない方がいいのかなとモヤモヤしてました
41 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 19:21:42.58 ID:X4A9CpkS.net] ヘッダで必要ならヘッダでimport、ソースで必要ならソースでimport
42 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 00:42:23.09 ID:OCoBz1Jl.net] ヘッダにはimportせず @class の登場も多い
43 名前:デフォルトの名無しさん [2017/11/25(土) 10:14:21.83 ID:QEaE88pM.net] すれ違いだったらすみません。 dudReciveMemoryWarningの活用方法って何かありますでしょうか?
44 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 10:47:26.89 ID:HXFBSnjY.net] 今必要でなくて再取得/再計算できるものは解放するんや せやないとクラッシュする
45 名前:デフォルトの名無しさん [2017/11/25(土) 10:57:22.27 ID:QEaE88pM.net] するarcの場合は自動なのでやることはないとうことですか? または配列にnilを入れたりすることも効果ありますか?
46 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 14:12:30.26 ID:xzKXUh+9.net] strong変数にnilを代入してメモリを解放 NSArrayは要素をstrongで保持するのでNSArrayごとnilにすれば解放される ただでかいメモリ食うのは主にビューなんで、表示してない不要なビューは解放するのが効く つうか、ビューは必要な分を動的に生成が基本だろ そもそもそのメッセージ飛んできたらユーザーに再起動を促すね俺は
47 名前:デフォルトの名無しさん [2017/11/26(日) 03:28:42.31 ID:9JZfehuk.net] >>46 Viewを動的作成しておいて解放は効果ありそうですね。 Tabだったら他のViewcontrollerを解放することは可能でしょうか? 確かにこまごま対処するより再起動なら間違いないですね
48 名前:デフォルトの名無しさん [2018/01/08(月) 17:55:53.60 ID:PDDlr6cN.net] 返り値複数の関数は作れますか?
49 名前:デフォルトの名無しさん [2018/01/08(月) 19:39:48.53 ID:g3wGVkXu.net] 構造体とかobject(メンバ)を返す
50 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 20:03:11.34 ID:BUMGzXZx.net] cocoa event handling 難しいです。 Windowに置いたAVPlayerViewのjkl キーナビゲーションをカスタマイズ=潰したいです。 別のViewを配置して、NSResponderのkeyEquivalent系メソッドでキーコードのjklなNSEventをぶんどれば良いのでしょうか。 AVPlayerViewは、acceptFirstResponderにYesと返してくるのに、Viewをクリックしてもfirstresponderにならないので悩んでます。
51 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 22:15:32.63 ID:oP8dWPVt.net] AVPlayerViewのサブクラスを作って、その(キー)イベントハンドラでやればいいんじゃないの。てかそれが普通で簡単確実じゃないかなあ。もしくはMethod Swizzlingでとか NSResponder云々はResponder chainを理解してなさげ。奪うとかよりも取りこぼしを拾うような感じで、やりたいような処理機会を奪うのはムズいだろう
52 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 21:00:50.73 ID:r2JNGeyO.net] もう少し教えて下さい。 event handling guideを読み進めたのですが、keyboard eventの場合には、最初にperformkeyequivalent がWindow上の全viewに対して一通り呼ばれて、 その後にmenu barのショートカットが評価され、 それでも該当しない場合に初めて keyDown:をresponder chainへ投げる流れに進む、 と理解したのですが、正しいでしょうか。 この理解ですと、acceptFirstResponder/responder chainが意味を持つのはキーイベント処理のかなり後になるように思えます。 viewが実装しているキーボード処理をoverrideする場合 親クラスがkeydownのみ実装していると仮定するのは 微妙かなと感じたのですが、AppKitではkeyequivalentでは実装しない、そういう前提で書くのが正しいのでしょうか。
53 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 21:39:21.90 ID:CuNC/zNj.net] 読んだだけだろ?テストしたらわかるよperformKeyEquivalent:の意味が
54 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 06:10:45.34 ID:W1XJdyx1.net] ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
55 名前:デフォルトの名無しさん [2018/02/16(金) 11:15:20.63 ID:619F/gvV.net] こういう宣伝活動はエセ右翼
56 名前:デフォルトの名無しさん [2018/02/25(日) 12:03:36.95 ID:v4cEluZE.net] performSelecterで複数の引数を指定するにはどうすればよいですか?
57 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 14:39:30.86 ID:JPXzVKnW.net] performSelector:withObject:withObject:
58 名前:デフォルトの名無しさん [2018/02/25(日) 17:21:55.57 ID:v4cEluZE.net] ありがとうございます 3つからは配列しかないでしょうか
59 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 19:59:03.61 ID:bmk994+o.net] 辞書にキー値で入れて渡せばいくらでも
60 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 23:04:26.61 ID:EklcbxjR.net] ドキュメントのニュアンス的に書いてあるようにperformSelector:は簡易版のようなもので、本来NSInvocationを使うのが筋だと思ってる まあ、NSInvocationはめんどくさいから普通に>>59 のいうやり方にするけど NSInvocation使ってperformSelector:のオレオレバージョンメソッド追加したりも簡単だけど、それもあんましないな
61 名前:デフォルトの名無しさん [2018/02/26(月) 01:16:10.13 ID:tsC3awB5.net] 他で既にたくさん呼ばれている関数の引数が3つ以上だと使えないですね。 Timerで代替できるけど、ちょっと流れが読みにくくなっちゃうんですよね
62 名前:デフォルトの名無しさん [2018/02/26(月) 01:19:45.75 ID:tsC3awB5.net] progressviewを読んでも表示されないときに、処理を一旦をOSに返し?表示させるために使ってますが、他の良い方法はありますか?
63 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 01:59:59.33 ID:4buxL9WA.net] 流れが読めないなw
64 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 03:20:00.69 ID:4buxL9WA.net] performSelector:withObject:withObject:... の、ただ引数が増えましたバージョンはNSInvocation使って普通にできたな Timer〜処理を一旦をOSに〜がafterDelay:付きのような気ががするが、そもそもそれは複数引数なんてないしな afterDelay:付きはcancelPreviousPerformRequestsWithTarget:selector:object:をどう実現すんのかわからんが、それいらんのだったら同じくでできる
65 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 03:31:09.46 ID:MMVJYAud.net] 単に次のrunloop cycleで処理を実行させたいということのような気がするんで -[NSOpeartionQueue addOperationWithBlock:] でいいんじゃないかな (あれば、だけど)
66 名前:デフォルトの名無しさん [2018/02/26(月) 09:56:36.23 ID:tsC3awB5.net] キャンセルというのがあるんですね! 初めて知りました。 addOperation試してみます。 勉強になりました。 ありがとうございます。
67 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 22:05:45.15 ID:qhw5X0vA.net] 今日からObjective-Cを勉強し始めた初心者です OSX/macOS用のデスクトップアプリの製作を目標にしています ファイル出力で躓いている点がありアドバイス頂けませんでしょうか NSStringのwriteToURLでテキストファイルを出力したいのですが、Callback関数内で実行すると EXC_BAD_ACCESSエラーになってしまいます 試しにコピペでCallback関数の外で実行するとエラーになりませんでした。コードはこんな感じです NSString *hoo = @"test"; [hoo writeToURL: savePanelURL atomically:true encoding:NTUTF8StringEncoding error:nil] savePanelURLはsavePanelで入力しています USB機器に1byte送信して、その結果をCallbackで受信したら受信結果をファイルに書き出すのが目的です ご助言お願いします
68 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 22:14:01.26 ID:qhw5X0vA.net] すみません、上の質問は取り下げとさせて下さい スレ汚し失礼しました
69 名前:67 mailto:sage [2018/03/25(日) 22:57:04.08 ID:qhw5X0vA.net] 67です。改めて質問させて下さい savePanelで保存ファイル名を入力したらUSB機器に送信し、Callbackで結果を受信したらそれを ファイルに出力する、と言う処理を考えています savePanelから得たURLを直接Callback関数に渡す事は出来ないので一旦publicな変数に 格納していますが、Callback関数がこのNSURLを参照するとEXC_BAD_ACCESS例外に なってしまいます。Callback関数内でNSLog()でNSURL変数を参照すると例外が発生しました callback関数が別スレッドで動いているからでしょうか?しかしながら、unsigned charの配列 なんかは問題なく参照出来ています。クラスインスタンスだけだめなんでしょうか。 解決方法についてご助言頂けますと幸いです
70 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:32:44.01 ID:epnL0PWD.net] Callbackにデリゲートも持たせる iokitのUSB関連のコールバックは基本そういう設計になってる
71 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 11:00:28.93 ID:nKFwl68E.net] 情報量が足りないから推測するしかないけど、メモリ管理がきちんとできてなくて public な変数とやらがdangling pointer になっているような気がする
72 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:16:29.50 ID:Nh3QPOgS.net] >>70 ありがとうございます。Delegateですか・・・ グーグッて見たんですが世の中のサンプルは全部delegate側と被delegate側でクラスが分かれてる 例ばかりで、以下のような1つのクラス内でdelegateをデリゲートする方法が分かりませんでした・・・ @interface hoo : NSObject { NSURL *url; } - (void) sendUSBData; static void receiveUSBDataCallback(・・・・・・); @end sendUSBDataの中でurlを設定した後にUSB機器に向けて送信しています。その際にCallbac関数に receiveUSBDataCallbackを指定します Callback関数内で受信結果をファイルに書き出したいのですが、 NSLog(@"%@", url) ; と書いた行でEXC_BAD_SCCESSになります
73 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:01:46.90 ID:qoAxdzUq.net] これ単にコールバック関数まで来たときには既に NSURL *url が消えてなくなってるんと ちゃうの?
74 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:28:21.89 ID:6VXiCpbu.net] hoo のインスタンスをどうやって receiveUSBDataCallback に渡してるの?
75 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:23:52.61 ID:xcLBevCX.net] @interface hoo ... @end の中に入れてることから、そこに入れても hoo と全く無関係な単なる Cの関数 だとは思ってなさげ
76 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 23:12:49.99 ID:GcQCgl46.net] hooで自信のインスタンスを返すクラスメソッド作っておけば良い そこからhooを取得してurlを渡すゲッターメソッドも作っておけば良い それだけの話でしょ
77 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 23:52:03.04 ID:HBbH3CfN.net] Callbackにユーザ定義ポインタ(void *)あるんじゃないの 何使ってるのか知らんけど、USBなんちゃらRecieveなんちゃらだったかは、Callback登録するときに一緒に渡して、Callback呼ばれる時にはそれが引数と渡ってくるようになってたようだけど であれば、それでurlだのfooだの渡すだけじゃね
78 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 23:58:50.40 ID:HBbH3CfN.net] ああ、EXC_BAD_SCCESSなら、それやってて意図せず(ARCをよくわかってないと)に、元のインスタンスがCallback呼ばれる時にはすでにdeallocされてるとかありそう
79 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 23:59:11.49 ID:GcQCgl46.net] 基本的なiokitの設計ならコールバックはそうなってるけど libusbとかでやってるなら話は変わってきそう
80 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 14:42:04.87 ID:T4ssCAAm.net] 皆さんはキーボードはUS使ってる? 私は場所によってUSだったりJISだったりするんだけど objcの場合@や{}[]使う事が多いからjisの方が書き易い気がしてきた どうなんだろ
81 名前:デフォルトの名無しさん [2018/04/02(月) 04:11:07.55 ID:3ewhMOuh.net] USになれたらUSが合理的
82 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 04:27:54.19 ID:ZyMoq4+j.net] >{}[]使う事が多いからjisの方が書き易い これがイミフでそういう話には進まないな
83 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 12:17:51.99 ID:Qs9eq6u+.net] USキーボードってかな入力できるの? ローマ字変換のみ?
84 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 14:03:58.45 ID:Iiz9jeIK.net] >>82 俺は意味分かった。
85 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 19:37:02.92 ID:g3r8EJqq.net] >>83 できるけどキーの数足りてないので何らかの割り当ては必要
86 名前:デフォルトの名無しさん [2018/04/02(月) 20:04:40.50 ID:se2Xdp9V.net] 両方つかったけど あまりかわらない 慣れかな インテリジェンスだし そんな連続でキーパンチ続けないし
87 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:07:16.72 ID:lWZnsSZL.net] bitFlyerがObjective-C共同開発者Tom Love氏を顧問に、ブロックチェーン向け言語開発に取り組む https://jp.techcrunch.com/2018/04/06/tomlove-joins-bitflyer/
88 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:01:20.39 ID:pDgCeBjY.net] 共同ツール 1 https://seleck.cc/685 https://trello.com/ ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど Trello Chrome拡張機能 elegant ttp://www.kikakulabo.com/service-eft/ trelloのオープンソースあり 共同ツール 2 https://www.google.com/intl/ja_jp/sheets/about/ 共同ツール 3 https://slack.com/intl/ja-jp https://www.dropbox.com/ja/ https://bitbucket.org/ https://ja.atlassian.com/software/sourcetree https://sketchapp.com/extensions/plugins/ ttp://photoshopvip.net/103903 ttps://goodpatch.com/blog/sketch-plugins/