2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Xcode part13

1 :名称未設定:2015/02/26(木) 08:34:38.54 ID:ojNSjCwp0.net
OS XやiOSの開発環境Xcodeのスレ。

Xcode
https://itunes.apple.com/jp/app/xcode/id497799835?mt=12
Xcodeダウンロードページ
https://developer.apple.com/xcode/downloads/
Xcode Glossary
https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/Xcode_Glossary/20-Glossary/Glossary.html
Apple Developer
https://developer.apple.com/jp/
日本語ドキュメント
https://developer.apple.com/jp/documentation/

■関連スレ
let s: プログラミング言語? = Swift[2]
http://anago.2ch.net/test/read.cgi/mac/1408755325/
プログラミング言語Swift 3
http://anago.2ch.net/test/read.cgi/mac/1408762479/
Macでプログラミング{11}
http://anago.2ch.net/test/read.cgi/mac/1414566499/
[SDK]iPhoneアプリ開発初心者質問箱42[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1418535022/
iOSアプリ 個人開発者の雑談スレ31
http://anago.2ch.net/test/read.cgi/mac/1422337153/
Objective-C [ObjC part:8.1];
http://peace.2ch.net/test/read.cgi/tech/1414816517/
Swift part4 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1415860741/

■前レ
Xcode part12
http://anago.2ch.net/test/read.cgi/mac/1356341840/

801 :名称未設定:2016/05/21(土) 12:56:05.80 ID:M9ebEtl60.net
Obj-CもSwiftもメモリ管理は参照カウンター方式で管理されてる
つまり、そのオブジェクトがどこからも参照されなくなったら破棄される
Viewも一般的にはそのViewが画面から破棄された時にメモリから破棄される
バックグラウンド処理は別スレッドだから、Viewの存在に関係なく処理が終わるまで存続するだろうけど、
例えばのそのバックグラウンド処理の中からViewを参照(強参照)していたりすると、そのバックググラウンド処理が
終わるまでは、Viewもメモリ上には残ることになるけど、バックグラウンド処理が終わる前にViewを閉じていたりすると
Viewの画面コントロール自体ははすでに無い状態だから、バックグラウンド処理の中から画面を更新しようとすると
おかしなことになる。最悪クラッシュする
だから、バックグラウンド処理の中でViewなんかを保持するする場合は、普通は弱参照で参照する。
弱参照は参照カウンタに影響を与えない参照で、しかも参照先が破棄された場合は自動的にnilが設定されるので、
参照している側は参照先が破棄されたのかどうかを判断できる
まぁ詳しくは参照カウントあたりでググった方がいい

802 :名称未設定:2016/05/21(土) 13:03:56.39 ID:Q+p4pQLc0.net
>>800
バックグラウンド処理が終わらない内にyを押して前の画面に戻ったら、通常はその時点でViewController B/View Bはdeinit/deallocされる。
通信などの処理のdelegateとしてViewController Bが指定されていると思うけど、delegateはweakであってretainされないので、ViewController Bが
navigation controller によってreleaseされた段階で(view Bから前の画面に戻った段階で)ViewController Bは消滅。
同時にdelegateはnilになり、通信結果はどこにも返されない。

通信処理がdelegateとしてのViewController Bをretainしていた場合(←悪い作法だけど)は…
ViewController Bは通信処理によって参照されているので消滅しない。
帰ってきた通信結果がLabel Zに表示される(でもユーザーからは見えない。)
(ViewController Bは通信処理をretainしていると思うので、この場合は最悪循環参照になってリークとなる。)

現在のiOSでは、View Controllerが存在しているのに、先にViewが消滅することはないです。

803 :名称未設定:2016/05/21(土) 13:44:49.17 ID:T655dIhH0.net
>>800
class BViewController : UIViewController {
  @IBAction func yAction() {
    // バックグラウンド処理が終わったら、引数のClosureをメインスレッドで呼び出しするメソッド
    someOperation.getZStringAsync({ [unowned self] (string:String)->Void
      // 以下、1,2,4,3の順序の場合:
      /*
        selfは消えてるから落ちるよ。
      */
      self.z.text = string
      
      /*
        [unowned self]を[weak self]に変えれば、weakがnilになってるから落ちないよ。
      self?.z.text = string
      */
      
      /*
        [unowned self]を無くすとClosureがselfをキャプチャしてくれるから落ちなくなるよ。
        ただし、BViewControllerがsomeOperationを所有してると循環参照になってずっと消えないよ。
      self.z.text = string
      */
    })
  }
}

804 :名称未設定:2016/05/21(土) 13:48:35.76 ID:T655dIhH0.net
>>803
@IBAction func yAction() じゃなくて override func viewDidLoad() に訂正。

805 :名称未設定:2016/05/21(土) 13:52:40.27 ID:T655dIhH0.net
>>803
あああ、もう一個

>ただし、BViewControllerがsomeOperationを所有してると循環参照になってずっと消えないよ。
より厳密に言うと

ただし、BViewControllerがsomeOperationを所有していて、かつsomeOperationが引数のClosureを所有していると、循環参照になってずっと消えないよ。

かな。

806 :名称未設定:2016/05/21(土) 13:58:14.87 ID:T655dIhH0.net
(string:String)->Voidの後にin書くの忘れた
ああもう死のう

807 :名称未設定:2016/05/21(土) 14:31:15.30 ID:I/us7EWY0.net
死んじゃうの?
かわいそう

808 :名称未設定:2016/05/24(火) 22:03:47.54 ID:GFs3y6NE0.net
Root View Controllerの名前が変えられない(´・_・`)

809 :名称未設定:2016/05/24(火) 22:36:30.81 ID:GFs3y6NE0.net
Opaque Navigation Barに変更したら出来た

810 :名称未設定:2016/05/24(火) 23:56:49.10 ID:X4zwtVW20.net
textfieldを複数配置して、
1番目のtextfieldを入力してreturnを押したら次のtextfieldにフォーカスが当たるように…みたいなことをしたいです

textFieldShouldReturnメソッドの中で引数に1番目のtextfieldが来たら
2番目のtextfield.becomeFirstResponder()とすれば思った通りの挙動になることは分かったのですが
becomeFirstResponderメソッドが何をしているのかがよくわかりません
キーボードを非表示にする際にもresignFirstResponderというメソッドがひつようになるあたり、
ファーストレスポンダーというのがイベント周りで結構大事な事をしているっぽいと考えているのですが
このファーストレスポンダーというのは何なのでしょうか?

総レス数 1005
233 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★