Objective-C [ObjC part:9];

1デフォルトの名無しさん2017/11/17(金) 21:00:33.77ID:oYmLZZ1y
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
 (Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)

前スレ
Objective-C [ObjC part:8.1];
http://mevius.2ch.net/test/read.cgi/tech/1414816517/

Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://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

38デフォルトの名無しさん2017/11/22(水) 10:19:35.09ID:r2ZqOIfG
>>37
#include
使ってた人は
重複定義とか循環参照とかでビルドエラーになった経験があるからね
#import
でも#include時と同じように気を付けるってだけ
実際#importは多重インクルードしない機能があるから問題ないけど
ソースが汚れるし参照でエラーが出る事あるしで無闇にimportしない
必要な物だけimportして
親子関係をしっかり考えたコーディングを心がけましょうってこと

39デフォルトの名無しさん2017/11/22(水) 15:51:24.96ID:xPTGudok
なるべく必要最小限にということですね。

40デフォルトの名無しさん2017/11/22(水) 15:55:29.92ID:xPTGudok
AViewcontrollerを開いたあとに、BViewcontrollerを開くと、Aでimport たファイルはBでしなくてもビルドが通るので書かない方がいいのかなとモヤモヤしてました

41デフォルトの名無しさん2017/11/22(水) 19:21:42.58ID:X4A9CpkS
ヘッダで必要ならヘッダでimport、ソースで必要ならソースでimport

42デフォルトの名無しさん2017/11/23(木) 00:42:23.09ID:OCoBz1Jl
ヘッダにはimportせず
@class
の登場も多い

43デフォルトの名無しさん2017/11/25(土) 10:14:21.83ID:QEaE88pM
すれ違いだったらすみません。
dudReciveMemoryWarningの活用方法って何かありますでしょうか?

44デフォルトの名無しさん2017/11/25(土) 10:47:26.89ID:HXFBSnjY
今必要でなくて再取得/再計算できるものは解放するんや
せやないとクラッシュする

45デフォルトの名無しさん2017/11/25(土) 10:57:22.27ID:QEaE88pM
するarcの場合は自動なのでやることはないとうことですか?
または配列にnilを入れたりすることも効果ありますか?

46デフォルトの名無しさん2017/11/25(土) 14:12:30.26ID:xzKXUh+9
strong変数にnilを代入してメモリを解放
NSArrayは要素をstrongで保持するのでNSArrayごとnilにすれば解放される
ただでかいメモリ食うのは主にビューなんで、表示してない不要なビューは解放するのが効く
つうか、ビューは必要な分を動的に生成が基本だろ
そもそもそのメッセージ飛んできたらユーザーに再起動を促すね俺は

47デフォルトの名無しさん2017/11/26(日) 03:28:42.31ID:9JZfehuk
>>46
Viewを動的作成しておいて解放は効果ありそうですね。
Tabだったら他のViewcontrollerを解放することは可能でしょうか?
確かにこまごま対処するより再起動なら間違いないですね

48デフォルトの名無しさん2018/01/08(月) 17:55:53.60ID:PDDlr6cN
返り値複数の関数は作れますか?

49デフォルトの名無しさん2018/01/08(月) 19:39:48.53ID:g3wGVkXu
構造体とかobject(メンバ)を返す

50デフォルトの名無しさん2018/01/10(水) 20:03:11.34ID:BUMGzXZx
cocoa event handling 難しいです。

Windowに置いたAVPlayerViewのjkl キーナビゲーションをカスタマイズ=潰したいです。
別のViewを配置して、NSResponderのkeyEquivalent系メソッドでキーコードのjklなNSEventをぶんどれば良いのでしょうか。

AVPlayerViewは、acceptFirstResponderにYesと返してくるのに、Viewをクリックしてもfirstresponderにならないので悩んでます。

51デフォルトの名無しさん2018/01/10(水) 22:15:32.63ID:oP8dWPVt
AVPlayerViewのサブクラスを作って、その(キー)イベントハンドラでやればいいんじゃないの。てかそれが普通で簡単確実じゃないかなあ。もしくはMethod Swizzlingでとか
NSResponder云々はResponder chainを理解してなさげ。奪うとかよりも取りこぼしを拾うような感じで、やりたいような処理機会を奪うのはムズいだろう

52デフォルトの名無しさん2018/01/13(土) 21:00:50.73ID:r2JNGeyO
もう少し教えて下さい。
event handling guideを読み進めたのですが、keyboard eventの場合には、最初にperformkeyequivalent
がWindow上の全viewに対して一通り呼ばれて、
その後にmenu barのショートカットが評価され、
それでも該当しない場合に初めて
keyDown:をresponder chainへ投げる流れに進む、
と理解したのですが、正しいでしょうか。

この理解ですと、acceptFirstResponder/responder chainが意味を持つのはキーイベント処理のかなり後になるように思えます。
viewが実装しているキーボード処理をoverrideする場合
親クラスがkeydownのみ実装していると仮定するのは
微妙かなと感じたのですが、AppKitではkeyequivalentでは実装しない、そういう前提で書くのが正しいのでしょうか。

53デフォルトの名無しさん2018/01/13(土) 21:39:21.90ID:CuNC/zNj
読んだだけだろ?テストしたらわかるよperformKeyEquivalent:の意味が

54デフォルトの名無しさん2018/02/16(金) 06:10:45.34ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

55デフォルトの名無しさん2018/02/16(金) 11:15:20.63ID:619F/gvV
こういう宣伝活動はエセ右翼

56デフォルトの名無しさん2018/02/25(日) 12:03:36.95ID:v4cEluZE
performSelecterで複数の引数を指定するにはどうすればよいですか?

57デフォルトの名無しさん2018/02/25(日) 14:39:30.86ID:JPXzVKnW
performSelector:withObject:withObject:

58デフォルトの名無しさん2018/02/25(日) 17:21:55.57ID:v4cEluZE
ありがとうございます
3つからは配列しかないでしょうか

59デフォルトの名無しさん2018/02/25(日) 19:59:03.61ID:bmk994+o
辞書にキー値で入れて渡せばいくらでも

60デフォルトの名無しさん2018/02/25(日) 23:04:26.61ID:EklcbxjR
ドキュメントのニュアンス的に書いてあるようにperformSelector:は簡易版のようなもので、本来NSInvocationを使うのが筋だと思ってる
まあ、NSInvocationはめんどくさいから普通に>>59のいうやり方にするけど
NSInvocation使ってperformSelector:のオレオレバージョンメソッド追加したりも簡単だけど、それもあんましないな

61デフォルトの名無しさん2018/02/26(月) 01:16:10.13ID:tsC3awB5
他で既にたくさん呼ばれている関数の引数が3つ以上だと使えないですね。
Timerで代替できるけど、ちょっと流れが読みにくくなっちゃうんですよね

62デフォルトの名無しさん2018/02/26(月) 01:19:45.75ID:tsC3awB5
progressviewを読んでも表示されないときに、処理を一旦をOSに返し?表示させるために使ってますが、他の良い方法はありますか?

63デフォルトの名無しさん2018/02/26(月) 01:59:59.33ID:4buxL9WA
流れが読めないなw

64デフォルトの名無しさん2018/02/26(月) 03:20:00.69ID:4buxL9WA
performSelector:withObject:withObject:... の、ただ引数が増えましたバージョンはNSInvocation使って普通にできたな

Timer〜処理を一旦をOSに〜がafterDelay:付きのような気ががするが、そもそもそれは複数引数なんてないしな
afterDelay:付きはcancelPreviousPerformRequestsWithTarget:selector:object:をどう実現すんのかわからんが、それいらんのだったら同じくでできる

65デフォルトの名無しさん2018/02/26(月) 03:31:09.46ID:MMVJYAud
単に次のrunloop cycleで処理を実行させたいということのような気がするんで
-[NSOpeartionQueue addOperationWithBlock:] でいいんじゃないかな (あれば、だけど)

66デフォルトの名無しさん2018/02/26(月) 09:56:36.23ID:tsC3awB5
キャンセルというのがあるんですね!
初めて知りました。

addOperation試してみます。
勉強になりました。

ありがとうございます。

67デフォルトの名無しさん2018/03/25(日) 22:05:45.15ID:qhw5X0vA
今日から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デフォルトの名無しさん2018/03/25(日) 22:14:01.26ID:qhw5X0vA
すみません、上の質問は取り下げとさせて下さい
スレ汚し失礼しました

69672018/03/25(日) 22:57:04.08ID:qhw5X0vA
67です。改めて質問させて下さい
savePanelで保存ファイル名を入力したらUSB機器に送信し、Callbackで結果を受信したらそれを
ファイルに出力する、と言う処理を考えています

savePanelから得たURLを直接Callback関数に渡す事は出来ないので一旦publicな変数に
格納していますが、Callback関数がこのNSURLを参照するとEXC_BAD_ACCESS例外に
なってしまいます。Callback関数内でNSLog()でNSURL変数を参照すると例外が発生しました

callback関数が別スレッドで動いているからでしょうか?しかしながら、unsigned charの配列
なんかは問題なく参照出来ています。クラスインスタンスだけだめなんでしょうか。

解決方法についてご助言頂けますと幸いです

70デフォルトの名無しさん2018/03/26(月) 00:32:44.01ID:epnL0PWD
Callbackにデリゲートも持たせる
iokitのUSB関連のコールバックは基本そういう設計になってる

71デフォルトの名無しさん2018/03/26(月) 11:00:28.93ID:nKFwl68E
情報量が足りないから推測するしかないけど、メモリ管理がきちんとできてなくて public な変数とやらがdangling pointer になっているような気がする

72デフォルトの名無しさん2018/03/26(月) 20:16:29.50ID:Nh3QPOgS
>>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デフォルトの名無しさん2018/03/27(火) 00:01:46.90ID:qoAxdzUq
これ単にコールバック関数まで来たときには既に NSURL *url が消えてなくなってるんと
ちゃうの?

74デフォルトの名無しさん2018/03/27(火) 00:28:21.89ID:6VXiCpbu
hoo のインスタンスをどうやって receiveUSBDataCallback に渡してるの?

75デフォルトの名無しさん2018/03/27(火) 01:23:52.61ID:xcLBevCX
@interface hoo ...
@end
の中に入れてることから、そこに入れても hoo と全く無関係な単なる Cの関数 だとは思ってなさげ

76デフォルトの名無しさん2018/03/28(水) 23:12:49.99ID:GcQCgl46
hooで自信のインスタンスを返すクラスメソッド作っておけば良い
そこからhooを取得してurlを渡すゲッターメソッドも作っておけば良い
それだけの話でしょ

77デフォルトの名無しさん2018/03/28(水) 23:52:03.04ID:HBbH3CfN
Callbackにユーザ定義ポインタ(void *)あるんじゃないの
何使ってるのか知らんけど、USBなんちゃらRecieveなんちゃらだったかは、Callback登録するときに一緒に渡して、Callback呼ばれる時にはそれが引数と渡ってくるようになってたようだけど
であれば、それでurlだのfooだの渡すだけじゃね

78デフォルトの名無しさん2018/03/28(水) 23:58:50.40ID:HBbH3CfN
ああ、EXC_BAD_SCCESSなら、それやってて意図せず(ARCをよくわかってないと)に、元のインスタンスがCallback呼ばれる時にはすでにdeallocされてるとかありそう

79デフォルトの名無しさん2018/03/28(水) 23:59:11.49ID:GcQCgl46
基本的なiokitの設計ならコールバックはそうなってるけど
libusbとかでやってるなら話は変わってきそう

80デフォルトの名無しさん2018/04/01(日) 14:42:04.87ID:T4ssCAAm
皆さんはキーボードはUS使ってる?
私は場所によってUSだったりJISだったりするんだけど
objcの場合@や{}[]使う事が多いからjisの方が書き易い気がしてきた
どうなんだろ

81デフォルトの名無しさん2018/04/02(月) 04:11:07.55ID:3ewhMOuh
USになれたらUSが合理的

82デフォルトの名無しさん2018/04/02(月) 04:27:54.19ID:ZyMoq4+j
>{}[]使う事が多いからjisの方が書き易い
これがイミフでそういう話には進まないな

83デフォルトの名無しさん2018/04/02(月) 12:17:51.99ID:Qs9eq6u+
USキーボードってかな入力できるの?
ローマ字変換のみ?

84デフォルトの名無しさん2018/04/02(月) 14:03:58.45ID:Iiz9jeIK
>>82
俺は意味分かった。

85デフォルトの名無しさん2018/04/02(月) 19:37:02.92ID:g3r8EJqq
>>83
できるけどキーの数足りてないので何らかの割り当ては必要

86デフォルトの名無しさん2018/04/02(月) 20:04:40.50ID:se2Xdp9V
両方つかったけど
あまりかわらない
慣れかな
インテリジェンスだし
そんな連続でキーパンチ続けないし

87デフォルトの名無しさん2018/04/06(金) 17:07:16.72ID:lWZnsSZL
bitFlyerがObjective-C共同開発者Tom Love氏を顧問に、ブロックチェーン向け言語開発に取り組む
https://jp.techcrunch.com/2018/04/06/tomlove-joins-bitflyer/

88デフォルトの名無しさん2018/05/12(土) 11:01:20.39ID:pDgCeBjY
共同ツール 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/

新着レスの表示
レスを投稿する